目录
什么是继承?
继承分类
父类
super的使用
什么是继承?
继承是面向对象最显著的特征之一。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。
比如可以先定义一个类叫车,车有以下属性:车体大小,颜色,方向盘,轮胎,而又由车这个类派生出轿车和卡车两个类,为轿车添加一个小后备箱,而为卡车添加一个大货箱。
继承分类
继承是Java中实现代码重用的重要手段之一。Java中只支持单根继承,即一个类只能有一个直接父类,但可以间接继承多个类。
继承分为:单继承、多继承、不同类继承同一个类。
单继承:
多继承:
不同类继承同一个类:
继承的语法规则:
Java使用 “ extends ” 关键字为一个类指定父类,基本语法如下:
class 类名 extends 父类名{
类体
}
父类
父类也可成为超类(super class)或者基类(base class),派生出来的类成为子类或者派生类,子类可以继承父类的所有成员变量和方法。
“ java.lang.Object ” 类,Object类是所有类的公共祖先,即所有java类都是Object类的子孙类。
super的使用
调用父类的构造方法
子类可以继承父类的所有成员变量和方法,但构造方法是不能被继承的。子类必须定义自己的构造方法,但是子类可以在自己的构造方法中使用super关键字调用父类的构造方法。
子类调用父类构造方法的语法是:super( ) 或者 super(参数列表);
super()表示调用父类的无参构造方法,而语句super(参数列表)表示调用与参数匹配的父类构造方法。super语句必须放在子类构造方法的第一行。
访问父类成员
子类除了可以使用super语句调用父类构造方法以外,还可以使用super()访问类成员便来个和类方法。
基本语法如下:
super.父类成员变量
super.父类方法(实参列表)
父类:People
public class People {
private String name;
private int age;
private String sex;
public People() {
//调用默认的父类,Object类的构造方法
super();
}
public People(String name, int age, String sex) {
//调用默认的父类,Object类的构造方法
super();
this.name = name;
this.age = age;
this.sex = sex;
}
//定义People类的get和set方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public void print(){
System.out.println("大家好,我是" + this.getName() + ",今年" + this.getAge() + "岁了," + "性别" + this.getSex());
}
}
子类:Student
public class Student extends People{
private int sutdentId;
public Student() {
//调用父类People中的无参构造方法
super();
}
public Student(String name , int age , String sex ,int sutdentId) {
//调用父类People中的有参构造方法
super(name , age,sex);
this.sutdentId = sutdentId;
}
//定义Student类的get和set方法
public int getSutdentId() {
return sutdentId;
}
public void setSutdentId(int sutdentId) {
this.sutdentId = sutdentId;
}
public void printInOf(){
//调用父类People中的成员方法
super.print();
System.out.println("学号:" + this.getSutdentId());
}
}
测试类:StudentTest
public class StudentTest {
public static void main(String[] args){
System.out.println("---无参构造方法---");
//创建Student类对象stu01;使用无参构造方法
Student stu1 = new Student();
//调用父类People成员变量赋值
stu1.setName("张三");
//调用父类People成员变量赋值
stu1.setAge(20);
//调用父类People成员变量赋值
stu1.setSex("男");
//调用子类Student成员变量赋值
stu1.setSutdentId(10086);
//调用子类Student中的成员方法
stu1.printInOf();
System.out.println();
System.out.println("---有参构造方法---");
//创建Student类对象stu02;使用有参构造方法
Student stu2 = new Student("李四", 18, "男", 12315);
//调用父类People中的成员方法
stu2.print();
//输出子类Student中的学号变量
System.out.println("学号:" + stu2.getSutdentId());
}
}
测试类运行结果