java-多态的一些概念
多态
polymorphism即多种形态,模糊策略,以不变应万变,使用多态可以编写更加通用的代码。多态是建立在继承和重写的基础上,是一个运行期的动态绑定行为。
要发生多态有三个必要条件:要有继承,要有重写,父类引用指向子类对象
4 based
1)、继承链,自己没有找父亲
2)、编译看类型+确定方法表,运行找对象
3)、就近最优原则:自己没有才找父亲
4)、发生多态,父类对子类的新增方法不可见
extends关键字
继承的本质在于抽象。类是对对象的抽象,继承是对某一批类的抽象,从而实现对现实世界更好的建模。同时使用继承可以提高代码的复用性。(事实上,利用组合可以更好的实现代码复用!)extends的意思是“扩展“。子类是父类的扩展。
实际作用中是为了实现,实现代码的复用,延续+扩展父类信息。
即通过继承,子类自动拥有了基类的所有成员(成员变量和成员方法)。
ips:Java只支持单继承,不允许多继承:一个子类只能拥有一个直接基类,但是一个基类可以派生出多个子类
1 |
|
重写@Override
父类方法不满足子类的要求,按需改写。注意方法签名必须相同
两个类中存在父子关系,保持方法名必须相同,参数列表不能满足子类需求的时候,进行改写,参数列表也必须相同==。当子类重写父类的某个方法之后,通过子类调用该方法,一定调用的是重写之后的方法
1 |
|
注意属性不会重写,以下方法不会重写
1、静态方法不会重写,父类为静态,子类只能为静态,否则编译错误,只是可以在子类中出现和父类相同的方法,但不是重写,不能加@Override注解
2、final修饰方法否则编译错误
3、私有方法不会重写,只是可以在子类中出现和父类相同的方法,但不是重写,不能加@Override注解
Object继承链
Object类是所有Java类的根基类
如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!