package ex_inheritance;
public class Ex3 {
public static void main(String[] args) {
System.out.println("========= Grandfather =========");
// Grandfather 클래스의 인스턴스 생성
Grandfather grandfather = new Grandfather();
// 접근 가능한 멤버 : 2개
System.out.println(grandfather.house); // 직접 선언한 멤버변수
grandfather.singWell(); // 직접 정의한 메서드
System.out.println("========= Father =========");
// Father 클래스의 인스턴스 생성
Father father = new Father();
// 접근 가능한 멤버 : 4개(Father 2개 + Grandfather 2개)
System.out.println(father.pc); // 직접 선언한 멤버변수
father.drawWell(); // 직접 정의한 메서드
System.out.println(father.house); // Grandfather로부터 상속받은 멤버변수
father.singWell(); // Grandfather로부터 상속받은 메서드
System.out.println("========= Son =========");
// Son 클래스의 인스턴스 생성
Son son = new Son();
// 접근 가능한 멤버 : 6개(Son 2개 + Father 2개 + Grandfather 2개)
System.out.println(son.car); // 직접 선언한 멤버변수
son.programmingWell(); // 직접 정의한 메서드
System.out.println(son.pc); // Father로부터 상속받은 멤버변수
System.out.println(son.house); // Grandfather로부터 상속받은 멤버변수
son.drawWell(); // Father로부터 상속받은 메서드
son.singWell(); // Grandfather로부터 상속받은 메서드
}
}
class Grandfather {
String house = "이층집";
public void singWell() {
System.out.println("노래를 잘 한다!");
}
}
// Grandfather 클래스를 상속받는 Father 클래스 정의
class Father extends Grandfather {
// 멤버변수 : pc("최신형 컴퓨터")
// 메서드 : drawWell() - "그림을 잘 그린다!"
String pc = "최신형 컴퓨터";
public void drawWell() {
System.out.println("그림을 잘 그린다!");
}
}
// Father 클래스를 상속받는 Son 클래스 정의
class Son extends Father {
// 멤버변수 : car("스포츠카")
// 메서드 : programmingWell() - "프로그래밍을 잘 한다!"
String car = "스포츠카";
public void programmingWell() {
System.out.println("프로그래밍을 잘 한다!");
}
}