- 2009/11/01 21:39
- louet.egloos.com/4267121
- 덧글수 : 3
상속에 관해서
A,B,C클래스가 있다고 가정.
가령 이런식으로 상속이 되있다고 하면
class A{
private int a=1;
public int pt(){
return a;
}
}
class B extends A{
private int b=1;
public int pt2(){
return pt()+b;
}
}
여기까진 잘 됩니다. 즉, 상속을 받았기 때문에 pt()를 바로 불러올 수 있다는 것. 그런데
class C extends B{
private int c=1;
public int pt3(){
return pt()+c;
}
}
는 안된다는거.... class C에서 B를 상속받았고, B는 A를 상속받은 클래스니 A->B->C 이렇게 상속이 된 상태인데 어째서 C에서 바로 쓸수 없는가. 여기서 super.pt(); 이런식으로, 즉 B.pt(); 처럼은 사용이 가능한데 C에선 안되는 이유가 궁금합니당.
그리고 toString()이란 함수가 뭔가 특별한 기능을 하는지도 궁금. 가령 클래스 A에
toString(){
System.out.println("우아");
}
뭐 이런걸 만들어 놨다고 하면 나중에 다른 곳에서
System.out.println(A);
System.out.println(A.toString);
라고 하면 저 toString함수가 출력이 되던데(위 아래 둘 다 동일한 기능수행) 왜 저렇게 되는지도 궁금.
A,B,C클래스가 있다고 가정.
가령 이런식으로 상속이 되있다고 하면
class A{
private int a=1;
public int pt(){
return a;
}
}
class B extends A{
private int b=1;
public int pt2(){
return pt()+b;
}
}
여기까진 잘 됩니다. 즉, 상속을 받았기 때문에 pt()를 바로 불러올 수 있다는 것. 그런데
class C extends B{
private int c=1;
public int pt3(){
return pt()+c;
}
}
는 안된다는거.... class C에서 B를 상속받았고, B는 A를 상속받은 클래스니 A->B->C 이렇게 상속이 된 상태인데 어째서 C에서 바로 쓸수 없는가. 여기서 super.pt(); 이런식으로, 즉 B.pt(); 처럼은 사용이 가능한데 C에선 안되는 이유가 궁금합니당.
그리고 toString()이란 함수가 뭔가 특별한 기능을 하는지도 궁금. 가령 클래스 A에
toString(){
System.out.println("우아");
}
뭐 이런걸 만들어 놨다고 하면 나중에 다른 곳에서
System.out.println(A);
System.out.println(A.toString);
라고 하면 저 toString함수가 출력이 되던데(위 아래 둘 다 동일한 기능수행) 왜 저렇게 되는지도 궁금.















