JAVA/생활코딩 JAVA 상속
Java 상속(Inheritance) - 2. 기능의 개선과 발전 : 자식클래의 기능 추가 & 수정
꿈꾸는개발자maker
2022. 2. 6. 14:07
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
반응형