Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有可能铸造一种方法吗?_Java_Polymorphism - Fatal编程技术网

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();