class ParentsVariable1{
int a;
void pm1() {
System.out.println("ParentsVariable1의 a=" + a);
}
}
class ParentsVariable2 extends ParentsVariable1 {
void pm2() {
System.out.println("ParentsVariable2의 a=" + a);
}
}
class ChildVariable extends ParentsVariable2 {
String a;
void cm() {
// System.out.println("ChildVariable의 a=" + a);
// = System.out.println("ChildVariable의 a=" + this.a);
System.out.println("ChildVariable의 a=" + this.a + ", ParentsVariable1의 a=" + super.a );
// 현재 사용중인 객체의 부모영역을 지칭하는 예약어 super, super.super은 불가능. .연산자 앞에서 1번만 사용가능
}
}
public class InheritanceVariable {
public static void main(String[] args) {
ParentsVariable1 pv1 = new ParentsVariable1();
pv1.a = 9;
ParentsVariable2 pv2 = new ParentsVariable2();
pv2.a = 99;
ChildVariable cv = new ChildVariable();
cv.a = "HELLO";
cv.cm(); // 자기 객체/method의 a변수, ChildVariable의 a=HELLO
cv.pm2(); // ParentsVariable2의 a=0, 상속된 a 변수의 값이 출력됨.
cv.pm1(); // ParentsVariable1의 a=0 부모의 변수가 자식쪽에서 덮어쓰기 될 수 있으니 주의
}
}
둘 다 사용할 수는 없음. 덮어쓰기 됨. 부모 쪽 변수 먼저 만들어졌다가 자식 쪽 변수 똑같이
만들어지니까 부모쪽 변수가 가려지고 자식쪽 변수가 사용됨
class ParentMethod1{
void pm1() {
System.out.println("ParentMethod1의 pm1()입니다");
}
void m() {
System.out.println("ParentMethod1의 m()입니다");
}
}
class ParentMethod2 extends ParentMethod1{
void pm2() {
System.out.println("ParentMethod2의 pm2()입니다");
}
}
class ChildMethod extends ParentMethod2{
void cm() {
System.out.println("ChildMethod의 cm()입니다"); // 부모와 다른 메서드 이름
}
void m() {
System.out.println("ChildMethod의 m()입니다");
super.m(); //ParentMethod1의 m()입니다
}
}
public class InheritanceMethod {
public static void main(String[] args) {
ChildMethod cm = new ChildMethod();
cm.m(); //ChildMethod의 m()입니다
cm.cm();
cm.pm2();//ParentMethod2의 pm2()입니다
cm.pm1();//ParentMethod1의 pm1()입니다
ParentMethod2 pm2 = new ParentMethod2();
pm2.m();// 내꺼가 없으면 자식은 부모꺼 가져올수있으나 부모는 자식꺼 못가져옴
// pm2.cm();
pm2.pm2();
pm2.pm1();
}
}
'언어 > Java' 카테고리의 다른 글
업캐스팅(Upcasting), 다운캐스팅(Downcasting) (0) | 2023.08.01 |
---|---|
오버라이딩(Overriding)과 다형성(Polymorphism) (0) | 2023.07.31 |
상속(Inheritance) (0) | 2023.07.31 |
싱글톤 (0) | 2023.07.31 |
패키지 (0) | 2023.07.31 |