자식 클래스가 부모 클래스의 필드나 메소드를 그대로 받아서 사용할 수 있게 해줍니다.
public class Animal {
String name;
int legs;
String getInfo() {
return name + ", " + legs;
}
}
public class Chicken extends Animal {
int wings;
String getInfo() {
return name + ", " + legs + " legs, " + wings + " wings";
}
}
override - 부모의 기능을 자식 클래스에서 재정의. 위의 상속이란? 부분의 예시는 오버라이드입니다.
overload - 동일한 이름의 메서드를 형식이 다르면 여러개 만들 수 있습니다.
// overload example
class Cal {
public int sum(int v1, int v2) {
return v1 + v2;
}
public int sum(int v1, int v2, int v3) {
return v1 + v2 + v3;
}
}
this - 자기자신
super - 부모 클래스
class Cal {
public int sum(int v1, int v2) {
return v1 + v2;
}
public int sum(int v1, int v2, int v3) {
return this.sum(v1, v2) + v3;
}
}
class Cal3 extends Cal {
public int sum(int v1, int v2) {
System.out.println("Cal3!!!");
return super.sum(v1, v2);
}
public int minus(int v1, int v2) {
return v1 - v2;
}
}
부모 클래스의 생성자 함수가 인자를 받고 있다면, 자식 클래스도 그를 받아서 실행을 시켜줘야 로직이 맞아지겠죠.
class Cal {
int v1, v2;
Cal(int v1, int v2) {
System.out.println("cal init!!");
this.v1 = v1; this.v2 = v2;
}
}
class Cal3 extends Cal {
Cal3(int v1, int v2) {
super(v1, v2); /*******/
System.out.println("Cal3 init!!");
}
}
public class InheritanceApp {
public static void main(String[] args) {
Cal cal = new Cal(2, 1);
Cal3 c3 = new Cal3(2, 1);
}
}