一、继承的概述
image.png二、继承的格式
通过 extends 关键字,可以声明一个子类继承另外一个父类,定义格式如下:
class 父类 {
...
}
class 子类 extends 父类 {
...
}
继承,父子关系,子有父的特点。
三、继承中成员变量的访问特点
在父子类的继承关系中,如果成员变量重名,则创建子类对象时,访问有两种方式
1、直接通过子类对象访问成员变量
等号左边是谁,就优先使用谁,没有则向上找
2、简介通过成员方法访问成员变量
该方法属于谁,就优先使用谁,没有则向上找
成员变量访问
四、区分子类方法中重名的三种 成员变量
子父类中出现了同名的成员变量时,在子类中需要访问父类中非私有成员变量时,需要使用 super 关键字,至于修饰父类成员变量,类似于之前学过的 this**
使用格式 super.父类成员变量名
子类的成员变量 直接写成员变量
子类的局部变量 this.成员变量名
父类的成员变量 super.成员变量名
父类
package jichengDemo.demo1;
/**
* created by apple on 2020/6/7
*/
public class Fu {
int num = 10; //成员变量
}
子类
package jichengDemo.demo1;
/**
* created by apple on 2020/6/7
*/
public class zi extends Fu{
int num = 20; //成员变量
public void method(){
int num =30; //局部变量
System.out.println(num); //30 局部变量
System.out.println(this.num); // 20 本类的成员变量
System.out.println(super.num); // 10父类的成员变量
}
}
调用
package jichengDemo.demo1;
/**
* created by apple on 2020/6/7
*/
public class ExtendsField {
public static void main(String[] args) {
zi zi = new zi();
zi.method();
}
}
会返回 30 20 10
五、继承中成员方法的访问特点
image.png六、继承中方法的覆盖重写
重写:在继承关系中,方法的名称一样,参数列表一样override
重载:方法的名称一样,参数列表不一样 overload
注意事项:
1、必须保证父子类之间方法的名称相同,参数列表也相同
@Overrid,写在方法前面,用来检测是不是有效的重写
这个注解就算不写,只要满足要求,也是正确的覆盖重写
2、子类方法覆盖父类方法时,必须要保证子类方法权限修饰符 >= 父类方法权限修饰符。
public > protected > default > private
3、方法重写时,子类的返回值类型必须要 <= 父类的返回值类型。
4、方法重写时,子类抛出的异常类型要 <= 父类抛出的异常类型。
意义:
子类可以根据需要,定义特定于自己的行为。既沿袭了父类的功能名称,又根据子类的需要重新实现父类方法,从而进行扩展增强。
七、关于继承之后的构造方法
看上节
网友评论