面向对象三大特征——继承

继承:提高代码的复用性

继承的好处

  1. 避免代码重复
  2. 修改父类,影响所有的子类(增加了耦合性)

如何继承:使用extends关键字

  1. 如果一个类没有指定父类,默认父类是Object,Object类是所有类的父类
  2. 单继承 一个类只能有一个父类 C++可以多继承
  3. 可以多层继承

一父二子一测试

(1)编写父类

public class Person {//父类
    private String name;
    private int age;
    private String gender;
    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 getGender() {
        return gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }
    public Person(String name, int age, String gender) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }
    public Person() {
    }
    public void introduce(){
        System.out.println("姓名:"+name+"\t年龄:"+this.getAge()+"\t性别:"+this.gender);
    }
}

(2)编写Student和Teacher两个子类

public class Student extends  Person {//Student类是Person类的扩展
    private String stuNo;
    public String getStuNo() {
        return stuNo;
    }
    public void setStuNo(String stuNo) {
        this.stuNo = stuNo;
    }
    public Student(String name, int age, String gender, String stuNo) {
        super(name, age, gender);//调用父类的带三个参数的构造方法s
        this.stuNo = stuNo;
    }
    public Student() {
        
    }
}
public class Teacher extends  Person {//Teacher也是Person的扩展,Teacher是Person的子类
    private int teachOfYear;
    public int getTeachOfYear() {
        return teachOfYear;
    }
    public void setTeachOfYear(int teachOfYear) {
        this.teachOfYear = teachOfYear;
    }
    public Teacher(String name, int age, String gender, int teachOfYear) {
        super(name, age, gender); //调用父类的带三个参数的构造方法
        this.teachOfYear = teachOfYear;
    }
    public Teacher() {
    }
}

测试

public class Test {
    public static void main(String[] args) {
        //(1)创建Student类的对象
        Student stu=new Student("张三",20,"男","sxt1001");
        //创建Teacher类的对象
        Teacher tea=new Teacher("李四",30,"男",6);
        //来个自我介绍
        stu.introduce(); //父类的方法,子类可以继承
        tea.introduce();
    }
}

在这里插入图片描述
继承可以从父类继承非private的属性,非private的方法,不能继承构造方法,可以调用父类的构造方法

super关键字的作用:

a)调用父类的非private属性
b)调用父类的构造方法,要求必须是构造方法中第一句代码
c)调用父类的非private成员方法 super.introduce();
d)用于父类与子类的同名属性的区分,super指代的是父类,this指代的是子类

发布了26 篇原创文章 · 获赞 7 · 访问量 728

猜你喜欢

转载自blog.csdn.net/penerx/article/details/104347149