问题描述
- 问一个关于override的问题
-
问一个关于override的问题,小弟基础不是很强悍,望见谅,请问在android中重写了父类接口中的方法后,子类中重写的该方法时何时会被调用? 简单说就是下面的代码何时会被调用到,如何调用
@override
public void check{............
}
解决方案
子类内部调用 check、外部通过子类变量调用 check,都是调用子类的重写方法。
如果把子类赋给一个父类变量,通过父类变量调用 check,都变成调用父类的方法了。
解决方案二:
你确定把子类赋给父类变量,通过父类变量调用check,调用的是父类的方法?????
解决方案三:
你 new 出来的对象是哪个对象就调用哪个类的check方法,引用不管是父类型还是子类型,调用的方法只和你new出来的实体对象类型相关。
解决方案四:
Class classFather{
classFather();
check(){
syso("classFather check")
}
}
Class classSon extend classFather{
classSon();
check(){
System.out.println("classSon check");
}
}
main(){
classFather cf= new classSon();
cf.check();
classFather newcf=(classFather)cf;
newcf.check();
}
输出分别都是 classSon check
一句话,当左右类不同的时候,左边能够写出来的方法是左边类的方法,=右边是真正执行的方法所属于的类,也就是对象属于哪个类,new谁,执行谁的方法,如果进行了强制类型转换,对象是new谁的还是不变的。
解决方案五:
从new的实例开始,向父类寻找,先找到谁就调谁
时间: 2024-11-28 14:07:26