부모 클래스를 상속 받은 자식 클래스의 인스턴스가 부모의 객체로도 사용됨.
또한 자식 클래스의 객체로도 사용할 수 있음.
이게 뭔 개 소리냐고?
class Person {
String name;
int age;
int weight;
Person(){}
Person(String name, int age, int weight) {
this.name = name;
this.age = age;
this.weight = weight;
}
void wash(){System.out.println("씻다");}
void study(){System.out.println("공부하다");}
void play(){System.out.println("놀다");}
void who(){System.out.printf("%s는 %d살이며 %d kg이다. \\n", name, age, weight);}
}
우선 상위(부모) 클래스를 위와 같이 정의하자
인터페이스 몇 개 쓰고 하위 클래스를 아래와 같이 해보자
class Student extends Person implements Allowance, Train{
Student(String name, int age, int weight){
super(name, age, weight);
}
public void in(int price, String name){
System.out.println(price + "원 을" + name + "에게 받았습니다.");
}
public void out(int price, String name){
System.out.println(price + "원 을을" + name + "에 썼습니다.");
}
public void train(int price, String name){
System.out.printf("%s(을)를 %d원에 공부했다.", name, price);
}
}
메서드는 다 인터페이스에서 넘어온 거다. 상위클래스인 Person에는 없음.
extends를 Person에서 받는 Student 클래스다.
객체 생성시
Student s1 = new Student("백", 17, 80);