728x90
반응형
아까 쓴 코드는 그냥 Cal 의 기능을 연장해왔을 뿐 더해준 기능이 없다.
활용을 위해서는 연장을 해줘야한다
class Cal{
public int sum(int v1, int v2) {
return v1+v2;
}
}
class Cal3 extends Cal{
public int minus(int v1, int v2) {
return v1-v2;
}
}
public class InheritanceApp {
public static void main(String[] args) {
Cal c = new Cal();
System.out.println(c.sum(2, 1));
Cal3 c3 = new Cal3();
System.out.println(c3.minus(3, 10));
}
}
이걸 보면 Cal3 에다가 minus의 기능을 더해줬다. 이제 저기서는 minus 기능, sum 기능을 둘 다 호출해서 사용할 수 있다.
이렇게 부모가 가지고 있지 않은 기능을 추가해서 사용할수도 있고,
class Cal{
public int sum(int v1, int v2) {
return v1+v2;
}
}
class Cal3 extends Cal{
public int minus(int v1, int v2) {
return v1-v2;
}
//부모가 가지고 있는 기능을 다시 써줌 = 덮어쓰기
//영어로는 Overriding 이라고 한다
public int sum(int v1, int v2) {
System.out.println("Cal3!");
return v1+v2;
}
}
public class InheritanceApp {
public static void main(String[] args) {
Cal c = new Cal();
System.out.println(c.sum(2, 1));
Cal3 c3 = new Cal3();
System.out.println(c3.minus(3, 10));
System.out.println(c3.sum(2, 1));
}
}
이미 부모가 가지고 있는 sum이라는 기능도 가져와서 거기에 새로운 내용을 추가할 수도 있다.
위 코드의 경우 Cal3을 거쳐 계산했다는 의미로 Cal3 문구를 출력하게 했다.
이걸 Overriding이라고 부른다.
728x90
반응형
'Java > Java 상속' 카테고리의 다른 글
상속과 생성자 (0) | 2020.12.01 |
---|---|
this & super (0) | 2020.12.01 |
Overriding vs Overloading (0) | 2020.12.01 |
Java에서 상속 (0) | 2020.12.01 |