[JAVA] 예제로 알아보는 상속 (2) 생성자와 super
자바의 상속을 예제를 통해 정리하였다. (1) 상속의 개념과 IS-A 관계 (2) 생성자와 super (3) 오버로딩과 오버라이딩 생성자 객체를 선언하면 생성자는 자동으로 호출된다. 상속 관계에서 자식 클래
bumukisbest.tistory.com
[JAVA] 예제로 알아보는 상속 (3) 오버로딩과 오버라이딩
자바의 상속을 예제를 통해 정리하였다. ▽ 링크 (1) 상속의 개념과 IS-A 관계 (2) 생성자와 super (3) 오버로딩과 오버라이딩 오버로딩 (Overloading) 상속과는 크게 관련없지만 오버라이딩과 함께 보면
bumukisbest.tistory.com
상속 (Inheritance)
클래스 상속을 위해서는extends 라는 키워드를 사용한다.
자식 클래스는 상속받은 부모 클래스의 멤버를 사용할 수 있다.
class Person {
public void Func1(){
System.out.println("this is parent Func1");
}
public void Func2(){
System.out.println("this is parent Func2");
}
}; // 부모 클래스
class Minsu extends Person {
}; // 자식 클래스
public class Main {
public static void main(String[] args){
Minsu minsu = new Minsu();
minsu.Func1(); // 부모 클래스의 멤버 함수
minsu.Func2();
}
}
IS-A 관계
Person 클래스를 상속한 Minsu 클래스는 Person 클래스의 하위 개념이라고 볼 수 있다.
이는 "민수는 사람이다." "Minsu is a Person" 라고 표현할 수 있는데 이러한 관계가 바로 IS-A관계 즉, 상속관계이다.
Person minsu = new Minsu(); // Ok
Minsu person = new Person(); // Error
위의 결과를 보면 Minsu 자료형으로 Person 객체를 생성하는 것은 가능하지만,
Person 자료형으로 Minsu 객체를 생성하려고 하면 에러가 난다.
민수라는 자료형으로 사람 객체를 만들 수 있다.
민수는 사람이기 때문에 공통된 사람의 특성을 갖기 때문이다.
반면, 사람이라는 자료형으로 민수 객체를 만들 수는 없다.
왜냐하면 민수는 수많은 사람 중 하나이고 사람 자료형만으로는 민수를 모두 표현할 수 없기 때문이다.
※ 추가로 민수(자식) 자료형으로 사람(부모) 클래스를 만들 경우 아래를 주의해야 한다.
class Person {
public void Func1() {
System.out.println("this is parent Func1");
}
}; // 부모 클래스
class Minsu extends Person {
public void Func1() {
System.out.println("this is child Func1");
}
public void Func2() {
System.out.println("this is child Func2");
}
}; // 자식 클래스
public class Main {
public static void main(String[] args) {
Person minsu = new Minsu();
minsu.Func1();
minsu.Func2(); // error
}
}

사람 클래스를 민수 자료형으로 만들었기 때문에 멤버의 내용은 민수 클래스로 나타나지만,
이는 민수 자료형으로 만들었다 한들, 사람 클래스이기에 사람 클래스의 멤버만 사용할 수 있다.
어찌 보면 당연한 이야기지만 헷갈릴 수 있는 부분이다.
'JAVA > 예제' 카테고리의 다른 글
[JAVA] 예제로 알아보는 상속 (3) 오버로딩과 오버라이딩 (0) | 2022.04.14 |
---|---|
[JAVA] 예제로 알아보는 상속 (2) 생성자와 super (0) | 2022.04.14 |
댓글