1.通过父类型引用指向子类型对象来实现动态调用
B b = new B();
A a = b; //A为基类,B是继承A的子类
a.play(); //play()在A,B中均有定义,即子类重写(覆写)了该方法
分析:
# 为什么父类型的引用可以指向子类型的对象?
自动实现向上转型。通过A a = b;语句,编译器自动将子类对象向上移动,成为A类型
# a.play()将执行子类还是父类中定义的方法?
子类的。在运行时期,将根据a这个引用所指向的实际对象来获取相应的方法,这也是多态性。一个父类的引用,指向不同的子类对象,执行该方法时,将表现出不同的行为。
B b = new B();
A a = b; //A为基类,B是继承A的子类
a.play(); //play()在A,B中均有定义,即子类重写(覆写)了该方法
分析:
# 为什么父类型的引用可以指向子类型的对象?
自动实现向上转型。通过A a = b;语句,编译器自动将子类对象向上移动,成为A类型
# a.play()将执行子类还是父类中定义的方法?
子类的。在运行时期,将根据a这个引用所指向的实际对象来获取相应的方法,这也是多态性。一个父类的引用,指向不同的子类对象,执行该方法时,将表现出不同的行为。
2017-01-19
之前学到这只能看别人的才能写出来没思路还看不懂,又学了一遍对特性和知识点又有了一层认识,自己终于独立完成了!请多指教,幕友们!
http://www.imooc.com/article/15947
http://www.imooc.com/article/15947
就像一棵树,类属于顶层,全局变量和方法在类下层,局部变量在方法下层,上层的可以作用在下层(即全局变量可以作用到方法里面),下层有的就自己解决(即全局变量和局部变量同名时使用局部变量),上层更高可以任性(即全局变量不用初始化值,而局部变量必须初始化值)。。。。暂时想到这么多
2017-01-18