나는 여러개의 자식이있는 추상 부모 클래스를 가지고 있습니다. 그 아이가 그 아이의 모든 경우에 대해 동일한 변수를 가질 수 있기를 바랍니다. 그것은 단지 하드 코드 된 수있을 때 바보 같아 때문에 그것을 이름을 말할 수있는 생성자를 전달하지 싶습니다. 내가 읽은 것에서 다음과 같이 부모 인스턴스 변수를 숨 겼고 원하는대로 작동하지 않습니다.Java 상속 ... 혼란스러운
public abstract class Parent {
public String name = "the parent";
public getName(name);
}
public class Child1 extends Parent {
public String name = "Jon";
}
public class Child2 extends Parent {
public String name = "Mary";
}
Child1 c = new Child1();
c.getName(); // want this to return "Jon", but instead returns "the parent".
명확하게하기 위해, 기본적으로 내가 원하는 c.getClass() 같은. getName()하지만 난은 클래스 이름에 따라, 오히려 하드 코딩에 그 결과를 가지고 싶지 않아 값.
감사
정확히 * 무엇이 요청되는지 분명하지 않습니다. getName()이 원하는 것을 반환 할 이유를 명확히 할 수 있습니까? 해야만하는 일련의 어설 션을 작성할 수 있습니까? –
어떤 문제를 해결하려고합니까? 왜 클래스 수준 레이블 (모든 인스턴스에 대해 동일)이 필요한지에 대한 더 나은 예를들 수 있습니까? 어쩌면 우리는 더 나은 대안을 제안 할 수 있습니다. –
레거시 코드를 지원하는 이름이 필요합니다. 즉, 클래스 이름을 c.getClass(). getName()을 통해 직접 사용해야하지만 코드의 나머지 부분은이를 지원하도록 작성되지 않았습니다. – Tyler