继承的出现提高了代码的复用性。
继承的出现让类与类之间产生了关系,提供了多态的前提。
不要仅为了获取其他类中某个功能而去继承
继承:类继承另一个类,这个类除了创建自己的成员外,还能够继承或扩展另一个类的成员
被继承的类叫超类(superclass),继承超类的类叫子类(subclass)
继承性特性如下:
单一继承性:子类只能有一个超类,而超类可以有多个子类;
子类继承超类的成员;
子类可以创建自己的成员
子类不能继承超类的构造器,只能在构造器中通过super()调用超类的构造器;
子类的构造器首先要调用超类的构造器;
多态性:子类的成员隐藏和覆盖超类中相同的成员;超类的对象可以对子类的实例引用;
由abstract和final修饰的类指示类的是否必须或不能被继承。
Java只支持单继承,不允许多重继承
定义:在子类中可以根据需要对从父类中继承来的方法进行改造,也称为方法的重置、覆盖。在程序执行时,子类的方法将覆盖父类的方法。
要求:
重写方法必须和被重写方法具有相同的方法名称、参数列表。
重写的方法的返回值类型不能大于被重写的方法的返回值类型:继承
重写方法使用的访问权限不能小于被重写方法的访问权限。
子类不能重写父类中声明为private权限的方法
子类方法抛出的异常不能大于父类被重写方法的异常
方法覆盖:
在子类的创建中,具有与超类中有相同的方法名、相同的参数以及相同的返回数据类型(可以是子类)。
子类还具有比超类中被覆盖方法更大的可访问性,即权限限制更宽松
运行时的多态
超类的对象可以引用子类的实例(上转型)
该对象仍然只能够调用超类中定义的方法和变量
对于覆盖或继承的方法,Java运行时系统根据调用该方法的实例的类型来决定选择哪个方法调用。
对子类的一个实例,如果子类覆盖了超类的方法,则运行时系统调用子类的方法。
如果子类继承了超类的方法(未覆盖),则运行时系统调用超类的方法。
1.继承 2.方法重写 3.父类对象引用子类实例。
当超类的对象是子类实例引用时,这个对象所访问的成员必须是超类中所具有的。
这个对象不能访问子类自己创建的成员。
当这个对象访问的是被覆盖的方法,则调用的是子类中覆盖方法。
只有当这个对象被强制转换成子类类型时,这个子类的所有成员才有可能被访问。
instanceof关键字:判断某个对象是否属于某个类
除了继承和实现外,依赖、关联、聚合、组成也是类之间的重要关系类型
面向对象继承
最新推荐文章于 2023-03-05 15:15:11 发布