如何从java中的子类对象调用重写方法

时间:2014-05-28 06:46:55

标签: java oop inheritance

有没有办法在类 c 中创建的类<​​em> b 对象的类a中调用test()

class a {
 void test(){
   System.out.println("in a");
  }
}

 class b extends a {
   void test(){
     System.out.println("in b");
   }
}

public class c{
 public static void main(String[] args) {
   b refb = new b();
   refb.test();
  }
}

2 个答案:

答案 0 :(得分:2)

您只能在类test()的{​​{1}}方法中执行此操作,如下所示。

b

答案 1 :(得分:0)

在Java中,默认情况下,所有非static private方法都是virtual。因此,除非您修改a#test,否则无法从b实例调用b#test。唯一的方法(根据您当前的设计)使用a

的实例
public class c{
    public static void main(String[] args) {
        b refb = new b();
        // code to call test() in class a
        //this is the only way you have in Java
        a refA = new a();
        a.test();
    }
}