Java里的多态属性调用_Java多态中成员的调用的特殊情况

1.当子类和父类中有相同的成员属性的时候

public classDemo {public static voidmain(String[] args) {

Father son=newSon();

System.out.println(son.num);

}

}classFather{public int num=4;

}classSon extends Father{int sum=5;

}

执行结果是 4

多态调用该变量时:

编译时期:参考的是引用型变量所属的类中是否有被调用的成员变量。/如果/没有该变量,编译失败。

运行时期:也是调用引用型变量所属的类中的成员变量。

因为他指向的父类型的引用,创建的子类型,这是只能看到父类型里面有的东西,隐藏了子类型里面具体的内容

2.当父类和子类中拥有同名的非静态方法的时候

public classDemo {public static voidmain(String[] args) {

Father son=newSon();

son.show();

}

}classFather{voidshow() {

System.out.println("father method is called");

}

}classSon extends Father{voidshow() {

System.out.println("son method is called");

}

}

编译时期,参考左边,如果没有该方法,则编译失败。

运行时期,参考右边的对象所属的类。

3.当子类和父类里面拥有同名的静态函数的时候

public classDemo {public static voidmain(String[] args) {

Father son=newSon();

son.show();

}

}classFather{static voidshow() {

System.out.println("father method is called");

}

}classSon extends Father{static voidshow() {

System.out.println("son method is called");

}

}

因为是静态函数。 所以已经和对象没有关系 只和调用者有关系

所以编译和运行的结果都参考左边

静态的属性或者方法是很少使用多态来调用的,只会出现在面试题中。

所以多态指的就是对象的多态

对于成员函数和成员属性是动态绑定到对象上

对于静态函数和静态属性是静态绑定到类上的,不绑定到对象上  这是根本因为它在内存中存储的区域不同

方法区:构造函数,非静态方法,构造代码块

方法区中的静态方法区:静态函数,静态代码块

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值