728x90
우리의 관심사
어떻게하면 자식 클래스가 부모 클래스가 가지고 있지 않은 새로운 기능을 추가할 것인가?
또 부모 클래스가 가지고 있는 기능을 덮어쓰기(수정) 할 것인가?
기능 추가
오리지널 Cal의 sum기능을 복사해서 Cal3에 넣고 minus로 변경
Cal3는 이제 부모 클래스가 없는 마이너스 기능도 탑재
class Cal33 extends Cal11{ // extends : Cal1을 상속
public int minus(int v1, int v2) {
return v1-v2; // Cal3는 이제 부모 클래스가 없는 마이너스 기능도 탑재
}
}
Cal33 c3 = new Cal33();
System.out.println(c3.sum(2,1));
System.out.println(c3.minus(2,1)); // 자식클래스에 추가된 minus기능
오리지널의 기능 수정 가능?
가능
오리지널의 sum에 프린트기능 추가 수정해서 cal3에서 써보자
class Cal33 extends Cal11{ // extends : Cal1을 상속
public int minus(int v1, int v2) {
return v1-v2; // Cal3는 이제 부모 클래스가 없는 마이너스 기능도 탑재
}
public int sum(int v1, int v2) {
System.out.println("Cal3!!");
return v1+v2; // 부모가 가진 기능을 재정의(수정)
}
}
오버라이딩(Overriding)
부모가 가진 기능을 재정의하는 것을 오버라이딩(Overriding)
전체코드
// Java 상속 - 2. 기능의 개선과 발전
class Cal11 {
public int sum(int v1, int v2) {
return v1+v2;
}
}
class Cal33 extends Cal11{ // extends : Cal1을 상속
public int minus(int v1, int v2) {
return v1-v2; // Cal3는 이제 부모 클래스가 없는 마이너스 기능도 탑재
}
public int sum(int v1, int v2) {
System.out.println("Cal3!!");
return v1+v2;
}
}
public class Inheritance02 {
public static void main(String[] args) {
Cal11 c1 = new Cal11();
System.out.println(c1.sum(2,1));
Cal33 c3 = new Cal33();
System.out.println(c3.sum(2,1));
System.out.println(c3.minus(2,1)); // 자식클래스에 추가된 minus기능
}
class Cal22 {
public int sum(int v1, int v2) {
return v1+v2;
}
public int minus(int v1, int v2) {
return v1-v2;
}
}
}
728x90
반응형
'JAVA > 생활코딩 JAVA 상속' 카테고리의 다른 글
Java 상속(Inheritance) - 6. 수업을 마치며 : 다형성(Polymorphism), 접근제어자, Final, Abstract (0) | 2022.02.06 |
---|---|
Java 상속(Inheritance) - 5. 상속과 생성자 (0) | 2022.02.06 |
Java 상속(Inheritance) - 4. this & super (0) | 2022.02.06 |
Java 상속(Inheritance) - 3. Overriding vs Overloading (0) | 2022.02.06 |
Java 상속(Inheritance) - 1. 수업소개 : 상속의 정의 & 장점 (0) | 2022.02.05 |