그래서 내가하려는 것은 추상 클래스에 필드가 있고이 추상 클래스가 하위 클래스에서 상속 될 때 클래스의 자식으로 해당 필드를 가질 수 있어야합니다. 추상적 인 부모.abastract 부모 필드의 하위 클래스를 지정하는 방법
예를 들어 플레이어를 상속 한 추상 플레이어 클래스와 클라이언트 및 상대 플레이어 (멀티 플레이어 게임용)가 있습니다. 플레이어에는 유닛 유형의 필드가 있습니다. 유닛 자체는 ClientUnit 및 OpponentUnit에 의해 상속됩니다. Client 생성자에 ClientUnit을 전달하고 Unit (상속, duh)으로 할당 할 수 있지만 ClientUnit 객체의 형식으로 예외를 넘겨받지 않고 반환하는 게터는 어떻게 만들 수 있습니까?
편집 : 문제를 더 잘 설명하기 위해 몇 가지 코드를 추가했습니다.
public abstract class Player {
private Unit unit;
public void setUnit(Unit unit) {
this.unit = unit;
}
public Unit getUnit() {
return unit;
}
}
public class Client extends Player {
@Override
public ClientUnit getUnit() {
return (ClientUnit)super.getUnit();
}
}
작동하는 것처럼 보이지만 안전하고 강력한 방법인지는 잘 모릅니다.
어떤 예외? 너 뭐 해봤 니? 반환 형식을보다 구체적으로 만들기 위해 메서드를 재정의 할 수 있다는 것을 알고 계십니까? –
일부 코드를 제공하십시오. 더 많은 사람들이 문제를 해결하려고 노력할 것입니다. 방문자 패턴이 필요한 것처럼 보입니다. –
나는 추상 클래스에 개인 필드 필드를 가지고 있고 거기에서 getters와 setters를 사용하고, getter와 setter를 ClientUnit과 stuff에 캐스트로 덮어 쓰려고 시도했다. 그러나 그것을하는 강력한 방법은 아닌지 잘 모르겠다. – Whiskydog