如何通过对象调用Parent重写方法

时间:2018-02-04 12:33:28

标签: java override

如何调用父重写方法。因为当我调用相同的方法时,调用子类的重写方法。但是,如果我想通过对象显式调用父方法,我该怎么办呢?我想要"你好B"作为输出。

   class B
{
B()
{
    System.out.println("B");
}
void display()
{
    System.out.println("hello B");
}
}

class A extends B
{ 
 A()
{
    System.out.println("A");
}
void display()
{
    System.out.println("hello A");

}
public static void main(String[] args)
{

    A a= new A();
    a.display();
}           
}

输出:

B
A
hello A

预期:

B
A
hello B

2 个答案:

答案 0 :(得分:0)

您创建的实例是A实例。只要A具有display()方法的实现,就会调用那个(A.display())并获得控制权。总是

A.display()可以通过在其正文中的某处调用super.display()来决定它将使用父实现。你不能从外面做,只有A.display()方法本身才能这样做。

设计类时,您可以决定其实例对方法调用的反应。如果覆盖方法,则有理由这样做:对于子实例,父实现不会执行方法名称所要求的操作。那么,是否可以从外部调用父方法,通常会出错。

答案 1 :(得分:0)

试试这样:

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool