一、今日学习
1.Java中多态的实现
(1)Java中多态的体现具体表现在方法的重载和覆盖上
(2)覆盖是指子类重写父类的方法
(3)子类重写父类中的方法,即子类中的方法与父类的方法保持一致,但是方法的修饰符一定要大于等于父类中方法的修饰符,此时在子类中调用与父类相同的方法时,调用的是子类的,并非父类的方法。
2.类型检测——向上转型/向下转型
>向上转型——父类对象的引用指向子类对象
>向下转型——再向上转型的基础上再次指向子类的对象
(1)向上转型
语法:父类 对象 =new 子类()
有时使用向上转型会丢失子类特有的方法
(2)向下转型
语法:父类 对象1=new 子类();
子类 对象2=(子类)对象1;
(3)总结
-
父类引用指向子类对象,子类引用不能指向父类对象
-
把子类对象直接付给父类引用叫upcasting向上转型,向上转型,不用强制转型
-
把指向子类对象的父类引用赋给子类引用叫downcasting向下转型,要强制转型
-
upcasting会丢失子类特有的方法,但是子类overriding父类的方法,子类方法有效
3.动态绑定
(1)动态绑定:当虚拟机调用一个实例方法时,它会基于对象实际的类型(只能在运行时得知)来选择所调用的方法,这就是动态绑定。具体表现在向上转型上。
(2)静态绑定:在程序编译时就绑定好。Java中的变量都是静态绑定的,方法只有private、static和final是静态绑定的。
二、遇到问题
不太理解向下转型对象之间的关系以及为什么向下转型能够调用子类特有的方法
三、明日学习
static、final、abstract关键词