我想创建一个子类对象
超过100个类扩展MasterClass
MasterClass是
public class MasterClass{
private int key;
private String value;
private String description;
public String getKey()
{
return key;
}
public void setKey(String key)
{
this.key= key;
}
public String getDescription()
{
return description;
}
public void setDescription(String description)
{
this.description = description;
}
public String getValue()
{
return value;
}
public void setValue(String value)
{
this.value= value;
}
}
其他类的例子
public class Product extends MasterClass{
public Product(){ }
}
public class Customer extends MasterClass{
private int productKey;
public Customer (){ }
public String getProductKey()
{
return productKey;
}
public void setProductKey(String productKey)
{
this.productKey= productKey;
}
}
等...
我将从客户端获取一个MasterClass对象,我想将该对象类型转换为相应的
if(masterClass instanceof User) {
User a_user = (User) a_ masterClass;
} else if(masterClass instanceof Customer) {
Customer a_customer = (Customer) a_ masterClass;
}
.
.//96 else if
.
.
.
.
else
{
//Create an object
}
如果我这样做,我最终会得到100个其他的。
请告诉我如何在没有其他情况下实现这一目标?
提前致谢。
答案 0 :(得分:1)
你需要多态性。
例如:
public void func(MasterClass m){
//your if else block;
}
代替此。您可以将func函数添加到MasterClass并在每个子项上覆盖它。然后只需调用:YourInstance.func();
public class MasterClass{
public void func(){};
}
public class Customer extends MasterClass{
@Override
//implement such on each child
public void func(){//spesific overrided function for Customer child }
}
//then
public void func(MasterClass m){
m.func();
}
答案 1 :(得分:0)
100个儿童班?疯。 我建议你检查所有这些子类是否与Master类强烈“IS-A”逻辑关系。
通常,为了避免if-else,使用多态,java将根据参数的类型进行运行时检查以决定调用哪个函数。
例如
class Application{
public static void main(String[] args){
Application app = new Application();
ChildClass1 child1 = new ChildClass1();
ChildClass2 child2 = new ChildClass2();
app.method(child1); //"ChildClass1's behaviour"
app.method(child2); //"ChildClass2's behaviour"
}
public method(ChildClass1 arg) {
System.out.println("ChildClass1's behaviour");
}
public method(ChildClass2 arg) {
System.out.println("ChildClass2's behaviour");
}
// 98 more...
}