Java의 관리 클래스 및 인터페이스에 문제점이 있습니다. 인터페이스 Superhero와 Human이라는 다른 인터페이스가 있습니다. 그런 다음 나는 PeterParker와 같이 Human type의 다양한 classe를 사용합니다. 나는 인간 개체를 만들 때관리 클래스 및 인터페이스 Java
public interface HumanAndSuper{
public Superhero fromHumanToSuperhero();
public Human fromSuperheroToHuman();
}
public interface SuperHero{
public void attacks();
}
는, 예를 PeterParker를 들어,이 클래스에서 나는 개인 중첩 된 슈퍼 히어로 클래스가 : 끝에 나는이 방법을 가지고 HumanAndSuper라는 인터페이스를 가지고있다. 예 :
public class PeterParker implements Human,HumanAndSuper{
//Constructors
public Superhero fromHumanToSuperhero(){
//the human turns into superhero associated
return new Spiderman();
}
public Human fromSuperheroToHuman(){
//the superhero becomes a human
return this;
}
public void speaks(){//It's a example
//Implementation
}
private class Spiderman extends PeterParker implements SuperHero{
public void attacks(){
//Implementation
}
}
}
실제로 인간의 수퍼 히어로 상대의 구현은 인간의 동일한 클래스의 내부이다. 내가 원하는 것은 동일한 변수를 가진 인간을 인스턴스화 할 수 있다는 것입니다. 인간과 슈퍼 히어로를 반대로 전달할 수 있습니다. 예 :
PeterParker peter=new PeterParker();//Human
peter.speaks();
peter=peter.fromHumanToSuperhero();//peter becomes spiderman
peter.attacks();//method in Spiderman class
peter=peter.fromSuperheroToHuman();//spiderman becomes Human
어떻게하면됩니까?
'PeterParker'는'SuperHero'가 아니므로,'peter = peter.fromHumanToSuperhero();'라는 지정은 작동하지 않습니다. 여기서 무엇을 이루려고하는지 명확하지 않습니다. 당신은 정교 할 수 있습니까? –
다른 컨텍스트에서 다른 메서드 집합을 허용하는 방법은 무엇입니까? Java에서 캐스팅을 통해서만 가능합니다. 특정 컨텍스트 (예 :''IllegalStateException'')에서 메소드가 허용되지 않는 경우 예외를 throw하여 가능합니다. (아마도 좀 더 ...) – Andy
전략 패턴에 대해 읽어야합니다. 이처럼 [어떻게 전략 패턴 작업?] [1] [1] : http://stackoverflow.com/questions/91932/how-does-the-strategy-pattern-work – shadrus