oop_promax_inherite

继承

/*
!!!什么是继承?继承后有啥特点?
    1.继承就是用extends关键字,让一个类和另一个类建立起一种父子关系。
    2子类可以继承父类非私有的成员。

!!!带继承关系的类,Java会怎么创建它的对象?对象创建出来后,可以直接访问哪些成员?
    1.带继承关系的类,java会用类和其父类,这多张设计图来一起创建类的对象。
    2.对象能直接访问什么成员,是由子父类这多张设计图(!!!)共同决定的,这多张设计图对外暴露了什么成员,对象就可以访问什么成员。

!!!使用继承有啥好处?
    1. 减少了重复代码的编写,提高了代码的复用性。(如:将多个子类中重复的代码放入父类中继承)

继承相关的注意事项:

1.权限修饰符
    1.就是用来限制类中的成员(成员变量、成员方法、构造器、代码块...)能够被访问的范围。
    2.private     在本类中
      缺省        在本类中  同一个包下的其他类里
      protected   在本类中  同一个包下的其他类里    任意包下的子类(!!!)里
      public      在本类中  同一个包下的其他类里    任意包下的子类(!!!)里   任意包下的任意类里

2.单继承、Object类
    1.java是单继承类的:一个类只能继承一个直接父类,但是支持多层继承。
    2.Object类是java所以类的祖宗类。我们写的任何一个类,其实都是object的子类或子孙类。

3.方法重写
    1.子类可以重写一个方法名称、参数列表一样的方法,去覆盖父类的这个方法,这就是方法重写。(声明不变,方法重写)
    2.注意:重写后,方法的访问,java会遵循就近原则。
    3.重写小技巧:使用 Override 注解,更安全且可读性更好。
    4.私有方法(因为该方法无法继承)、静态方法(与类相关而不与实例相关联,以及不适用于多态的概念)不能被重写。
    5.应用场景:子类重写Object类的toString()方法,以便返回对象中的内容。

4.子类中访问其他成员的特点:
    1.在子类方法中访问其他成员(成员变量、成员方法),是依照就近原则的。
        先子类局部范围找。
        然后子类成员范围找。
        然后父类成员方法找,如果父类范围还没有找到则报错。
    2.如果子父类中,出现了重名的成员,会优先使用子类的,如果想在子类的方法中使用父类的成员怎么办?
        可以使用super关键字,指定访问父类的成员:super.父类成员变量/父类成员方法。

5.子类构造器的特点:
    1.子类的全部构造器,都会先调用父类的构造器,再执行自己的。
        因为创建子类的对象的时候需要参考子类和父类的设计图,先调用父类的构造器初始化相关数据后,
        才能再回到子类的构造器,进而把所有数据都初始化。
    2.默认情况下,子类全部构造器的第一行代码都是super(),它会调用父类的无参构造器。
      如果父类没有无参构造器,则我们必须在子类构造器的第一行手写super(...),指定去调用父类的有参构造器,
      常见的应用场景:为对象中包含父类这部分的成员变量赋值。
    3.this(...)的作用:在构造器中调用本类的其他构造器。
    4.this(...)和super(...)的使用注意:都必须放在构造器的第一行。

*/
posted @ 2024-03-29 16:53  qing集  阅读(1)  评论(0编辑  收藏  举报