Java 对于子类((没有枚举或任何属性)),如何在超类中以不同的方式使用方法?
问题是我想要一个由a和三个子类组成的超类,B,C,D。 这里有一个方法,只有超类a有,并且没有子类有这个方法,这个方法在每个子类中有不同的结果。 我也不能覆盖任何方法。 如何在不使用enum或为任何类提供任何属性的情况下编写此代码? 例如:Java 对于子类((没有枚举或任何属性)),如何在超类中以不同的方式使用方法?,java,inheritance,polymorphism,Java,Inheritance,Polymorphism,问题是我想要一个由a和三个子类组成的超类,B,C,D。 这里有一个方法,只有超类a有,并且没有子类有这个方法,这个方法在每个子类中有不同的结果。 我也不能覆盖任何方法。 如何在不使用enum或为任何类提供任何属性的情况下编写此代码? 例如: public class { public String method1(){ //what each class type should do } } public class B extends{ } public static void mai
public class {
public String method1(){
//what each class type should do
}
}
public class B extends{
}
public static void main(String[] args) {
A[] elements = {new A(),new B()};
for (int i = 0; i < elements.length; i++) {
System.out.println(elements[i].method1());
}
}
结果例如:
A1
B1我认为方法重写是最好的解决方案 但是,如果希望在类A中有一个函数,可以使用istanceof来验证该类
如果目标不是剂量测量 您可以像这样使用泛型,但最好使用重写
public class A {
public <T extends A> String method1(T classInstance) {
return method(classInstance);
}
private String method(A classInstance) {
return classInstance.toString();
}
private String method(B classInstance) {
return classInstance.toString();
}
}
public class B extends A{
}
public class Application {
public static void main(String[] args) {
A[] elements = {new A (), new B ()};
for (int i = 0; i < elements.length; i++)
{
System.out.println (elements[i].method1(elements[i]));
}
}
}
方法重写?为什么不能在每个子类中重写method1。如果不能做到这一点,则必须重写该方法或传递枚举或参数。我不能在任何子类(如b)中编写任何方法。能否解释如何使用INSTACEOF来标识b.Method?b.Method将调用类A方法。然后它将检查对象b的类型,它是b的一个实例。因此,既然b instanceof b是真的,它将执行特定于类Bi的代码,希望这能回答您的问题
class A {
public String method1() {
if(this instanceof B) {
return "Class B";
//do something for class B
} else if (this instanceof C) {
return "Class C";
//do something for class C
}
return "";
}
}
class B extends A { }
class C extends A { }
public class Main {
public static void main(String[] args) {
A[] elements = {new A(),new B()};
for (int i = 0; i < elements.length; i++)
System.out.println(elements[i].method1());
}
}