2014-02-13 2 views
1

내가 슈퍼 클래스가, 그 다음과 같습니다내 수퍼 클래스에서 서브 클래스의 이름을 사용할 수 있습니까?

public abstract class Fish { 

protected int size; 

protected float weight; 

//constructor 

public Fish(int s, float w) { 
size = aSize;weight = aWeight;} 

나는이 슈퍼 클래스의 두 서브 클래스가 있습니다. 먼저 하나

public class SomeFish extends Fish{ 

//constructor 

public SomeFish(int s, float w) { 

super(s, w) } 

두 번째, • 12cm 0.5 :

public class AnotherFish extends Fish{ 

//constructor 

public AnotherFish(int s, float w) { 

super(s, w) } 

은 내가해야 할 일은처럼 뭔가를 반환 할 것 물고기 클래스의 String의 toString 메소드를 작성하는 것입니다 여기 물고기의 적절한 유형이어야합니다 (AnotherFish 또는 SomeFish). 문자열 toString 메서드를 추상화하지 않고 그것을 할 수 있고 SomeFish 및 AnotherFish 클래스 둘 다에서 문자열 toString 메서드를 구현할 수 있습니까?

+0

불투명 질문 –

+0

toString이 Object 클래스에 있으므로 추상화 할 필요가 없습니다. 필요한 경우 모든 클래스에서이를 재정의하십시오. – slipperyseal

+0

@KugathasanAbimaran 물고기의 이름을 가진 문자열을 AnotherFish 또는 SomeFish로 반환해야합니다. – user2926550

답변

5

실제 클래스 (아마도 하위 클래스)이 될 것이다는 this 인스턴스의 클래스를 참조하십시오

public abstract class Fish { 

    // rest of class omitted 

    @Override 
    public String toString() { 
     return "A " + size + "cm, " + weight + "kg " + getClass().getSimpleName(); 
    } 
} 

호출 getClass().getSimpleName()을 등

필요가 없습니다 문자열 "AnotherFish"를 반환합니다 이 작업을하기 위해 서브 클래스에 어떤 것을 정의 할 수 있습니다.

+0

에 haaaave해야한다. 나는 그것을 내가 시간에 보았 더라면 좋겠다.) 감사합니다! – user2926550

+0

시간에 봤어 ??? 이 답변은 질문 후 10 분 게시되었습니다. 그 정도로 빠르지 않습니까? – Bohemian

+0

미안, 나는 그런 뜻이 아니야. 내 잘못이야, 내가 그것을 채워주지 않았다. – user2926550

관련 문제