Java 有可能铸造一种方法吗?
晚上好, 我只是问自己,是否有可能铸造一种方法Java 有可能铸造一种方法吗?,java,polymorphism,Java,Polymorphism,晚上好, 我只是问自己,是否有可能铸造一种方法 public class A{ public void A_method() { System.out.println("THIS is A Class --> A_method"); } } public class B extends A{ @Override public void A_method() { System.out.println("THIS is B
public class A{
public void A_method() {
System.out.println("THIS is A Class --> A_method");
}
}
public class B extends A{
@Override
public void A_method() {
System.out.println("THIS is B Class --> A_method");
}
}
public class Main {
public static void main(String[] args){
A a = new A();
a.A_method();
}
}
输出:“这是一个类-->A_方法”
我试着这样投:
((B)a.A_method());
它应该打印:这是B类-->A_方法
但它不起作用。
可以这样强制转换方法吗
多亏了不可能强制转换方法,强制转换只适用于类型(对象和原语) 如果要调用子类
B
中重写的方法,则需要使调用该方法的对象的类型为B
:
A a = new B(); // the declaration type can be A but the object is a B
或
没有其他方法:只要运行时类型不是
B
,它就永远不会调用在B
中重写的方法。这就是多态性的工作原理。我认为,您正在寻找将超类强制转换为子类,而不是方法。不,不可能“强制转换”方法。。。您提供的语法((B)a.a_method())代码>正在尝试将A_method()
(无效)的结果强制转换为类B
引用。。您可能需要进一步了解Java中引用和对象之间的差异
B b = new B();