Java多态中的注意事项
2015-07-27 20:17
441 查看
覆盖 private method
fields 和static 方法
构造函数内部的多态行为
输出结果:
Base
Base
Upcasting
fields 和static 方法
构造函数内部的多态行为
覆盖 private method
因为private 方法是final函数,并且对于子类是不可见的,因此,子类中的同名函数是不具有多太的特性的。fields 和static 方法
多态是针对方法的,对于fields而言,是不存在多态性质的。class Base{ public String name = "Base"; } public class Upcasting extends Base{ public String name = "Upcasting"; public static void main(String [] args){ Upcasting u = new Upcasting(); Base b = new Base(); Base c = new Upcasting(); System.out.println(c.name); System.out.println(b.name); System.out.println(u.name); } }
输出结果:
Base
Base
Upcasting
从输出中,可以看出c是*upcasting*的引用,但是它指向的字段却是基类型的。 >*static*的方法不具有多态性,它是与 *class*绑定的,而不是和单个对象绑定的。
构造函数内部的多态行为
如果在父类的构造函数中调用了动态绑定的方法,这个方法的实现可能来自于子类,而在初始化父类时,子类还未被构造,可能会引起难以发现的bug相关文章推荐
- Java基础——集合框架(四)
- spring mvc中的@PathVariable
- 深入理解JAVA虚拟机笔记-05
- eclipse创建maven管理的web项目
- 【转】java中的TreeMap与TreeSet关系及实现(红黑树)
- 二叉树的三种排序Java实现
- java中的异常
- 你的Java日志,有没有用这些改进办法
- JAVA学习第十天
- Java调用存储过程返回数组
- JAVA 并发编程-线程池(七)
- 重学java23种设计模式(5)单例模式
- JAVA操作LDAP总结
- 《深入浅出struts2》--第八章,输入验证-内建验证程序required,requiredstring和stringlength
- SSH学习一 STRUTS2 DTO
- java入门相关
- spring中@value注解需要注意
- 重学java23种设计模式(4)原型模式
- java.lang.NumberFormatException: empty String
- 《深入浅出struts2》--第七章,类型转换-支持与Map一起使用