个人博客网:https://wushaopei.github.io/ (你想要这里多有)
1、继承性
1.1 为什么要类的继承性?(继承性的好处)
①减少了代码的冗余,提高了代码的复用性;
②更好的扩展性
③为多态性的使用提供了前提
1.2 继承的格式:A extends B
- A类叫做子类 (subClass)
- B类叫做父类 (superClass,超类,基类)
1.3 子类继承父类以后哪些不同?
子类继承父类以后,就拥了父类中的属性和方法(不认为父类中的构造器可以被继承。但是子类可以用super访问弗雷的构造方法。子类除了可以拥父类中的属性和方法,还可以自定义属性和方法。
1.4 java中继承性的说明
1.子类继承父类以后,就拥了父类中的属性和方法(不认为父类中的构造器可以被继承。子类除了可以拥父类中的属性和方法,还可以自定义属性和方法。
2.java中的类只支持单继承(一个类只能有一个父类。一个父类可以有多个子类)。
3.子类继承父类以后,无法直接访问父类中被私化的属性(我们认为继承了被私化的属性。但是我们可以间接的通过get/set方法对属性进行调用。
4.父类是一个相对的概念,父类分为直接父类和间接父类。
子类继承父类以后,除了拥父类中的属性和方法外,还继承了间接父类中的属性和方法。
2、方法的重写
2.1什么是方法的重写 :
定义 :子类继承父类以后,子类可以对父类中的方法进行重写(覆盖,覆写)
2.2方法重写后的调用 :
子类重写父类的方法后。通过子类对象进行调用方法,实际上调用的是子类中重写的父类中的方法。
2.3 说明
子类重写的方法 父类被重写的方法
1.子类重写的方法和父类被重写的方法的方法名和形参列表必须一样。
2.子类重写的方法的权限修饰符不小于父类被重写方法的权限修饰符。
3.子类重写的方法的返回值类型不大于父类被重写方法的返回值类型(父类被重写方法的返回值类型和子类重写方法的返回值类型必须子父类关系才能。
注意 :
①父类被重写方法的返回值类型如果是void 子类重写方法返回值类型也只能是void
②父类被重写方法的返回值类型 double 子类重写方法返回值类型int (不可以的,只能是相同的)
4.子类方法抛出的异常不能大于父类被重写方法的异常(后面再说
2.5 注意
- 如果父类中的方法的权限修饰符是private,那么我们不认为这个方法可以被子类重写。
- 子父类中同名的方法(非重写)须同时为static的,或同时为非static的
3、关键字super
super用来调用父类中的结构,包括属性,方法,构造器 。
super可以调用:属性,方法,构造器
super调用属性和方法:
父类被子类继承以后,可以在子类的构造器和方法中。通过使用"super."来调用父类中的属性和方法。一般我们都会省略掉"super."
如果子类中的属性名和父类中的属性名一样,那么调用父类中的属性就不能省略"super."。如果子类重写了父类中的方法,如果需要调用父类中被重写的方法也不能省略"super."。
super调用构造器:
格式 :super(形参列表)
说明 :
- super(形参列表)只能放在子类构造器的首行
- 在子类同一个构造器中只能有一个super(形参列表)
- 在子类同一个构造器中super(形参列表)和this(列参列表)只能使用其中的一个
- 在子类的构造器中如果没显示的调用super(形参列表)和this(列参列表) 那么默认调用的是 super() - 父类的空参构造器
4、子类对象实例化过程(理解)
过程上:
通过子类的构造器,一定可以调用到直接父类和间接父类....Object类中的构造器。进而将这些类的信息通过JVM加载到内存中。所以可以进行调用父类中的属性和方法。
结果上:
子类继承了父类以后。那么子类就拥了父类中的属性和方法。通过子类的对象就可以调用父类中的属性和方法。
注意:自始之终我们只认为创建了子类一个对象