반응형
Chapter 10
클래스 상속
class Animal {
String name;
void setName(String name) {
this.name = name;
}
}
// 개 는 동물이다.
class Dog extends Animal {
}
public class Sample {
public static void main(String[] args) {
Dog dog = new Dog();
dog.setName("poppy");
System.out.println(dog.name); // poppy 출력
}
}
상속이란
부모 클래스에서는 기본 생성자를 만들어 놓는 것 이외에는 상속을 위해 아무런 작업을 할 필요는 없다.
자식 클래스는 클래스 선언시 extends 다음에 부모 클래스 이름을 적어준다.
자식 클래스의 생성자가 호출되면, 자동으로 부모 클래스의 매개 변수 없는 생성자가 실행된다.
자식 클래스에서는 부모 클래스에 있는 public, protected로 선언된 모든 인스턴스 및 클래스 변수와 메소드를 사용할 수 있다.
super
매개 변수가 있는 생성자를 만들었을 경우에는 기본 생성자는 자동으로 들어가지 않는다.
이때, 해결할 수 있는 방법 두 가지는
1. 부모 클래스에 "매개 변수가 없는" 기본 생성자를 만든다.
2. 자식 클래스에서 부모 클래스의 생성자를 명시적으로 지정하는 super()를 사용한다.
오버로딩 , 오버라이딩
- 오버로딩(Overloading) : 확장 (메소드의 매개 변수들을 확장하기 때문에, 확장)
- 오버라이딩(Overriding) : 덮어 씀 (부모 클래스의 메소드 시그니처를 복제해서 자식 클래스에서 새로운 것을 만들어 내어 부모 클래스의 기능을 무시학, 자식 클래스에서 덮어 씀 )
public class ParentOverriding {
public ParentOverriding(){
System.out.println("ParentOverriding Constructor")
}
public void printName() {
System.out.println("printName() - ParentOverriding")
}
}
public class ChildOverriding extends ParencOverriding {
public ChildOverriding(){
System.out.println("ChildOverriding Constructor")
}
public void printName() {
System.out.println("ChildOverriding printName()")
}
}
public class InheriatnaceOverriding {
public static void main(String[] args){
ChildOverriding child = new ChildeOverriding();
child.printName();
}
}
//결과
//ParenctOverriding Constructor //부모 생성자 먼저 호출
//ChildOverriding Constructor //자식 생성자 호출
//ChildOverriding printName() // 오버라이딩
반응형
'Backend Web > Java' 카테고리의 다른 글
[JAVA] 예외 (0) | 2022.02.02 |
---|---|
[JAVA] 인터페이스 (0) | 2022.02.02 |
[JAVA] 접근 제어자 - public / protected / default / private (0) | 2022.02.01 |
[JAVA] 배열 (0) | 2022.02.01 |
[JAVA] 조건문 (0) | 2022.01.31 |