在这里多态能达到楼主所说的作用一部分.想"开通" 不是很明白. 看看这个 " 多态" 的例子行不行:public abstract class Person { protected String name; public Person(String sname){ this.name = sname; } public String getName(); // public void setName(String name); public String getGender(); }public class Test { public static class Man extends Person{ Man(String name){ super(name); } public String getGender(){ return 'M'; } public void doPCGaming(){ System.out.println(" I Like PC Gaming ."): } }
private static class Woman extends Person{ Woman(String name){ super(name); } public String getGender(){ return 'F'; } public void doShopping(){ System.out.println(" I like doing Shopping."); } } public static Person create(String gender){ if( gender.equalsIgnoreCase('M'){ return new Man(); }else{ return new Woman(); } } public static void main(String[] args){ Person p = gen(); // 随机生成 Man or Woman
if( p instanceof Man){ ((Man) p) .doPCGaming(); }else if ( p instanceof Woman){ ((Woman)p).doShopping(); }else{ throw new InternalError(" 人妖出现了."); } }}
xxx为你的类名称
这样就可以用xxx的方法了
看看这个 " 多态" 的例子行不行:public abstract class Person {
protected String name;
public Person(String sname){
this.name = sname;
} public String getName();
// public void setName(String name); public String getGender();
}public class Test {
public static class Man extends Person{
Man(String name){
super(name);
}
public String getGender(){
return 'M';
}
public void doPCGaming(){
System.out.println(" I Like PC Gaming ."):
}
}
private static class Woman extends Person{
Woman(String name){
super(name);
}
public String getGender(){
return 'F';
}
public void doShopping(){
System.out.println(" I like doing Shopping.");
}
}
public static Person create(String gender){
if( gender.equalsIgnoreCase('M'){
return new Man();
}else{
return new Woman();
}
} public static void main(String[] args){
Person p = gen(); // 随机生成 Man or Woman
if( p instanceof Man){
((Man) p) .doPCGaming();
}else if ( p instanceof Woman){
((Woman)p).doShopping();
}else{
throw new InternalError(" 人妖出现了.");
}
}}
但对于你的问题,可以有一个变通的方法达到要求:静态工厂
假设有a,b,c,d四个接口,你用一个类x同时实现这些接口,但记住将x的构造方法设为private,同时提供四个public static的方法:getA(), getB(), getC(),getD(),分别返回a,b,c,d四个接口类型。
这样不知是否能满足你的需求?