一文精通JAVA-第三篇多态
目录
【一文精通JAVA | 第三篇】多态
一、多态实现的条件:
1.必须在继承体系下
2.子类必须要对父类中方法进行重写
3.通过父类的引用调用重写的方法。
多态体现:在代码运行时,当传递不同类对象时,会调用对应类中的方法。
如果父类中已经有一个方法了,子类中又有方法名相同的方法,此时父类中的方法会被覆盖,这种情况叫重写/覆盖。
重写叫做 override
哪些方法不能被重写?
1.被private修饰的方法
2.被static修饰的方法
3.子类的访问修饰限定符一定要大于等于父类的访问限定符修饰。
4.被final修饰的方法
协变类型
当类中,方法名和参数名都相同时,我们称之为重写,当只有方法名相同时,我们称之为重载
方法重写规则:
子类方法在重写父类的方法是,一般必须与父类方法原型一致:返回值类型 方法名 (参数列表)要完全一致 被重写的方法返回值类型可以不同,但是必须具有父子类型的
重载和重写的区别?
二、向上转型和向下转型
向上转型
其实就一句话,通过子类指向父类对象
实际是创建一个子类对象,将其当成父类对象来使用
语法格式: 父类类型 对象名 = new 子类类型()
通过animal的引用无法调用子类的方法,从小范围到大范围的转换。
原因:
类型为animal此时调用时,只能调用父类自己的。
animal是父类类型,但可以引用一个子类对象,因为是从小范围向大范围的转换。
向上转型的时机:
1.直接赋值
2.传参
3.返回值
向下转型
向下转型 指的是 把父类的引用转换为子类的引用 ,从而访问子类特有的方法和属性。
前提:
向下转型前,该父类引用必须
实际指向的是一个子类对象
,否则会导致
ClassCastException报错
。