令人混淆的几个Java语言特性
2017-08-22 00:00
316 查看
在父类构造方法中调用方法会调用子类的方法
最终输出
原因: 动态绑定到子对象的方法上了.
如果子类未定义方法, 则会调用父类的方法, 而不是自动继承下来.
属性不具有多态, 只有方法具有多态.
输出结果
class Parent { public Parent() { System.out.println("init parent"); printName(); } public void printName() { System.out.println("name: parent"); } } class Son extends Parent { public Son() { System.out.println("init son"); printName(); } @Override public void printName() { System.out.println("name: son"); } } public class Main { public static void main(String[] args) { Son son = new Son(); } }
最终输出
init parent name: son init son name: son
原因: 动态绑定到子对象的方法上了.
如果子类未定义方法, 则会调用父类的方法, 而不是自动继承下来.
class Parent { private int a = 20; public int getA() { return a; } public void setA(int a) { this.a = a; } } class Son extends Parent { private int a = 10; @Override public int getA() { System.out.println("get a"); return a; } public int getSuperA() { return super.getA(); } } public class Main { public static void main(String[] args) { Parent parent = new Parent(); parent.setA(30); int result = parent.getA(); System.out.println(result); Son son = new Son(); System.out.println("=====before set====="); System.out.println(son.getA()); System.out.println(son.getSuperA()); son.setA(50); System.out.println("=====after set====="); System.out.println(son.getA()); System.out.println(son.getSuperA()); } }
属性不具有多态, 只有方法具有多态.
class Parent { public int var = 5; public String str = "parent"; } class Son extends Parent { public int var = 10; public String str = "son"; } public class Main { public static void main(String[] args) { Parent son = new Son(); System.out.println(son.var); System.out.println(son.str); } }
输出结果
5 parent
相关文章推荐
- Java语言面向对象特性详解
- JAVA面向对象访问的几个容易混淆点
- java安全沙箱(三)之内置于Java虚拟机(及语言)的安全特性
- java语言基础特性
- 黑马程序员----java语言的特性和面向对象编程
- JavaSE_8系列博客——Java语言的特性(六)--泛型(5)--泛型的使用
- JAVA语言跨平台特性
- Java语言的11个关键特性
- JAVA语言特性 THIS SUPER 案例
- java语言的基本介绍及相关特性
- Java语言的特性
- java基础之jdk1.5的几个新特性及若干类的使用
- java可以继续跟踪其新的特性。因为其它的语言在模仿
- Java语言的新特性,我们用了多少?
- 令人惊讶!Java是最快的服务器端Web应用开发语言
- javaSE_8系列博客——Java语言的特性(三)--类和对象(13)--理解类的成员
- 体验Java 5.0的新增语言特性
- javaSE_8系列博客——Java语言的特性(五)--接口和继承(3)--实现接口
- javaSE_8系列博客——Java语言的特性(三)--类和对象(6)--为你的类提供构造函数
- Java语言的9个关键特性