inheritance
Author
siwon
Date
2023-08-16 16:01
Views
854
상속(Inheritance)은 객체지향 프로그래밍(OOP)에서 사용되는 기본 개념 중 하나로, 한 클래스가 다른 클래스로부터 속성과 메서드를 물려받는 것을 의미합니다. 이는 새로운 클래스(하위 클래스 또는 파생 클래스)가 기존 클래스(상위 클래스 또는 부모 클래스)의 특성(속성과 메서드)을 얻을 수 있는 메커니즘입니다.
상속은 클래스 간의 계층적인 관계를 형성할 수 있게 해주며, 하위 클래스는 상위 클래스의 속성과 메서드를 상속받아 재사용할 수 있습니다. 이로써 코드 재사용성을 높이고, 더 구조화된 코드를 작성할 수 있습니다.
상속에 관한 주요 포인트는 다음과 같습니다:
1. **상위 클래스/부모 클래스:** 이 클래스는 상속될 클래스를 말합니다. 공통된 속성과 메서드를 정의하며, 이러한 특성들이 하위 클래스와 공유됩니다.
2. **하위 클래스/파생 클래스:** 이 클래스는 다른 클래스로부터 상속받는 클래스를 의미합니다. 부모 클래스의 기능을 확장하기 위해 새로운 속성이나 메서드를 추가할 수 있습니다.
3. **상속된 속성과 메서드:** 하위 클래스는 상위 클래스의 public과 protected 속성과 메서드를 상속받습니다. private 속성과 메서드는 하위 클래스에서 직접 접근할 수 없습니다.
4. **메서드 오버라이딩:** 하위 클래스는 부모 클래스에서 이미 정의된 메서드를 자신만의 구현으로 대체할 수 있습니다. 이를 메서드 오버라이딩이라고 합니다. 이를 통해 하위 클래스는 부모 클래스로부터 상속한 동작을 커스터마이즈하거나 확장할 수 있습니다.
다음은 PHP로 간단한 예제를 통해 설명합니다:
```php
class Animal {
protected $name;
public function __construct($name) {
$this->name = $name;
}
public function speak() {
return "Animal sound";
}
}
class Dog extends Animal {
public function speak() {
return "Woof!";
}
}
class Cat extends Animal {
public function speak() {
return "Meow!";
}
}
$dog = new Dog("Buddy");
$cat = new Cat("Whiskers");
echo $dog->speak(); // 출력: "Woof!"
echo $cat->speak(); // 출력: "Meow!"
```
이 예제에서 `Dog`와 `Cat` 하위 클래스는 `Animal` 상위 클래스로부터 `name` 속성을 상속받습니다. 그리고 `speak` 메서드를 오버라이딩하여 각각의 독특한 소리를 출력하도록 변경합니다.
상속은 코드를 조직화하고 코드 재사용성을 높이며, 공통된 특성과 동작을 가진 클래스 계층을 생성하는 데 도움을 주는 강력한 개념입니다.
PHP에서 `extends` 키워드는 클래스 간의 상속 관계를 설정하는 데 사용됩니다. 이 키워드를 사용하여 하위 클래스가 상위 클래스로부터 속성과 메서드를 상속받을 수 있습니다. 다음은 이 개념을 보다 자세히 설명한 것입니다:
```php
class 부모클래스 {
// 부모 클래스의 속성과 메서드
}
class 자식클래스 extends 부모클래스 {
// 자식 클래스의 속성과 메서드
}
```
여기서 `자식클래스`는 `부모클래스`를 확장하여, 상위 클래스의 public과 protected 속성 및 메서드를 상속받습니다. `extends` 키워드는 하위 클래스가 상위 클래스로부터 상속받음을 나타냅니다.
더 자세한 내용을 설명하기 위해 다음 예제를 살펴보겠습니다:
```php
class 동물 {
protected $종;
public function __construct($종) {
$this->종 = $종;
}
public function 소리() {
return "어떤 동물 소리";
}
}
class 개 extends 동물 {
public function 소리() {
return "멍멍!";
}
}
class 고양이 extends 동물 {
public function 소리() {
return "야옹!";
}
}
$개 = new 개("개과 동물");
$고양이 = new 고양이("고양이과 동물");
echo $개->소리(); // 출력: "멍멍!"
echo $고양이->소리(); // 출력: "야옹!"
```
이 예제에서 `개`와 `고양이`는 `동물` 상위 클래스를 확장합니다. 이들 하위 클래스는 부모 클래스로부터 `종` 속성과 `소리` 메서드를 상속받습니다. 하지만 각각의 클래스는 `소리` 메서드를 오버라이딩하여 고유한 동물 소리를 제공합니다.
`extends` 키워드는 PHP에서 상속의 기본적인 부분이며, 공통된 속성과 동작을 가진 클래스 계층을 생성하는 데 도움을 줍니다.
Total 0
You must be logged in to post a comment.
Total 45
| Number | Title | Author | Date | Votes | Views |
| 15 |
http request form method GET POST
siwon
|
2023.08.17
|
Votes 0
|
Views 1414
|
siwon | 2023.08.17 | 0 | 1414 |
| 14 |
printf()
siwon
|
2023.08.17
|
Votes 0
|
Views 1071
|
siwon | 2023.08.17 | 0 | 1071 |
| 13 |
heredoc 또는 nowdoc 구문
siwon
|
2023.08.17
|
Votes 0
|
Views 1069
|
siwon | 2023.08.17 | 0 | 1069 |
| 12 |
single vs double quotes
siwon
|
2023.08.17
|
Votes 0
|
Views 904
|
siwon | 2023.08.17 | 0 | 904 |
| 11 |
string functions
siwon
|
2023.08.17
|
Votes 0
|
Views 1050
|
siwon | 2023.08.17 | 0 | 1050 |
| 10 |
return types
siwon
|
2023.08.17
|
Votes 0
|
Views 1225
|
siwon | 2023.08.17 | 0 | 1225 |
| 9 |
date(), time() funtions
siwon
|
2023.08.17
|
Votes 0
|
Views 1187
|
siwon | 2023.08.17 | 0 | 1187 |
| 8 |
Superglobals
siwon
|
2023.08.17
|
Votes 0
|
Views 813
|
siwon | 2023.08.17 | 0 | 813 |
| 7 |
scalar types
siwon
|
2023.08.17
|
Votes 0
|
Views 916
|
siwon | 2023.08.17 | 0 | 916 |
| 6 |
constructor
siwon
|
2023.08.16
|
Votes 0
|
Views 990
|
siwon | 2023.08.16 | 0 | 990 |
| 5 |
composition vs inheritance
siwon
|
2023.08.16
|
Votes -1
|
Views 1193
|
siwon | 2023.08.16 | -1 | 1193 |
| 4 |
polymorphism = method overriding => abstract(추상화)와 관련있음
siwon
|
2023.08.16
|
Votes 0
|
Views 1155
|
siwon | 2023.08.16 | 0 | 1155 |
|
siwon
|
2023.08.29
|
Votes 0
|
Views 1209
|
siwon | 2023.08.29 | 0 | 1209 | |
| 3 |
encapsulation
siwon
|
2023.08.16
|
Votes -1
|
Views 919
|
siwon | 2023.08.16 | -1 | 919 |
|
siwon
|
2023.08.30
|
Votes 0
|
Views 1072
|
siwon | 2023.08.30 | 0 | 1072 | |
| 2 |
inheritance
siwon
|
2023.08.16
|
Votes 0
|
Views 854
|
siwon | 2023.08.16 | 0 | 854 |
| 1 |
object와 class의 차이점
siwon
|
2023.08.16
|
Votes 0
|
Views 1145
|
siwon | 2023.08.16 | 0 | 1145 |