//如果这里的sum方法被注释了此时a.sum()去父类A找sum方法, // 进来方法以后发现里面调用了一个geti()的方法此时重新回到子类B找geti()方法 //(注意的是这里触发了jav的动态数据绑定机制—————》就是上转型对象方法调用是看运行类型, // 调属性是看编译类型,A a=new B()————》a是编译类型,new B()是运行类型) //找到以后得到当前类的属性i的值然后回到父类去计算返回结果
1.主方法
/**
* @version 1.0
* function:
* author:阿卜杜赛麦提
* @date:2022/12/25 19:19
*/
public class Test {
public static void main(String[] args) {
A a=new B();
System.out.println(a.sum());
System.out.println(a.sum1());
}
}
2.A类
/**
* @version 1.0
* function:
* author:阿卜杜赛麦提
* @date:2022/12/25 19:19
*/
public class A {
public int i=10;
public int sum(){
return geti()+10;
}
public int geti(){
return i;
}
public int sum1(){
return i+10;
}
}
3.B类
/**
* @version 1.0
* function:
* author:阿卜杜赛麦提
* @date:2022/12/25 19:19
*/
public class B extends A{
public int i=200;
//如果这里的sum方法被注释了此时a.sum()去父类A找sum方法,
// 进来方法以后发现里面调用了一个geti()的方法此时重新回到子类B找geti()方法
//(注意的是这里触发了jav的动态数据绑定机制—————》就是上转型对象方法调用是看运行类型,
// 调属性是看编译类型,A a=new B()————》a是编译类型,new B()是运行类型)
//找到以后得到当前类的属性i的值然后回到父类去计算返回结果
public int sum(){
return i+10;
}
public int geti(){
return i;
}
public int sum1(){
return i+10;
}
}