如何调用父重写方法。因为当我调用相同的方法时,调用子类的重写方法。但是,如果我想通过对象显式调用父方法,我该怎么办呢?我想要"你好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
答案 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