TeachingAssistant
이 Student
인 사람은 Person
입니다. 방법 x()
이 나는 TeachingAssistant
의 인스턴스가 모두 Student
및 Person
경우클래스의 수퍼 클래스가 모두 같은 메서드를 가지고 있다면, 호출 할 수퍼 클래스를 구분하는 방법은 무엇입니까?
, 어떻게 학생의 x()
방법과 사람의 x()
메소드를 호출 구별합니까?
유효한 전화는 super.super.x()
입니까? 정말,
package supersuper;
import static java.lang.System.out;
interface Human {
String x();
}
class Person implements Human {
public String designation; //bad idea
Person() {
designation = x();
}
@Override
public String x() {
return "Person";
}
}
class Student extends Person {
Student() {
super();
}
@Override
public String x() {
return "Student";
}
}
class TeachingAssistant extends Student {
TeachingAssistant() {
super();
}
}
public class SuperSuper {
public static void main(String[] args) {
TeachingAssistant ta = new TeachingAssistant();
out.println(ta.designation);
}
}
당신이 원하는 것을 몰라 :
정말로 'super.super'가 필요한 경우 디자인 문제가 있다고 말하고 싶습니다. 하나의 클래스 계층 구조에서 너무 많은 일을 할 것이고 일부 기능은 별도의 클래스로 나갈 필요가 있습니다. 작문은 상황에 따라 상속보다 좋은 패턴 일 수 있습니다. – jpmc26
예, 일부 코드는 무엇이 요청되는지 명확히하기 위해 길어질 것입니다. – Thufir