A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 晨熙c 初级黑马   /  2019-9-18 18:24  /  689 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 晨熙c 于 2019-9-18 18:30 编辑

继承的概念
  - 继承是面向对象三大特征之一,可以使得子类具有父类的属性和方法,还可以在子类中重新定义,以及追加属性和方法
  - 实现继承的格式
  - 继承通过extends实现
  - 格式:class 子类 extends 父类 { }
  - 举例:class Dog extends Animal { }继承好处
  -提高了代码的复用性(多个类相同的成员可以放到同一个类中)
  -提高了代码的维护性(如果方法的代码需要修改,修改一处即可)
继承弊端
  -继承让类与类之间产生了关系,类的耦合性增强了
  -当父类发生变化时子类实现也不得不跟着变化,削弱了子类的独立性
super
  -this&super关键字:
  -this:代表本类对象的引用
  -super:代表父类存储空间的标识(可以理解为父类对象引用)
this和super的使用分别
成员变量:
    this.成员变量    -   访问本类成员变量
    super.成员变量 -   访问父类成员变量
成员方法:
    this.成员方法  - 访问本类成员方法
    super.成员方法 - 访问父类成员方法
构造方法:
    this(…)  -  访问本类构造方法
    super(…)  -  访问父类构造方法
注意:子类中所有的构造方法默认都会访问父类中无参的构造方法
​        子类会继承父类中的数据,可能还会使用父类的数据。所以,子类初始化之前,一定要先完成父类数据的初始化,原因在于,每一个子类构造方法的第一条语句默认都是:super()
方法重写概念
子类出现了和父类中一模一样的方法声明(方法名一样,参数列表也必须一样)
方法重写的应用场景
当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法,这样,即沿袭了父类的功能,又定义了子类特有的内容
Override注解用来检测当前的方法,是否是重写的方法,起到【校验】的作用
继承案例:
[Java] 纯文本查看 复制代码
//父类
public class Person {
    private String name;//姓名
    private String gender;//性别
    private int age;//年龄
    private String nationality;//国籍
//构造方法

    public Person() {
    }

    public Person(String name, String gender, int age, String nationality) {
        this.name = name;
        this.gender = gender;
        this.age = age;
        this.nationality = nationality;
    }
//    get set 方法

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getNationality() {
        return nationality;
    }

    public void setNationality(String nationality) {
        this.nationality = nationality;
    }
    //吃饭方法
    public void eat(){
        System.out.println("吃饭");
    }
    //睡觉方法
    public void sleep(){
        System.out.println("睡觉");
    }
    //工作方法
    public void work(){
        System.out.println("工作");
    }
}
//子类
public class Student extends Person {
    private String school;//学校
    private int stuNumber;//学号
    //构造方法
    public Student() {//无参构造方法
    }
    //有参构造方法
    public Student(String name, String gender, int age, String nationality, String school, int stuNumber) {
        super(name, gender, age, nationality);
        this.school = school;
        this.stuNumber = stuNumber;
    }
//get  set 方法
    public String getSchool() {
        return school;
    }

    public void setSchool(String school) {
        this.school = school;
    }

    public int getStuNumber() {
        return stuNumber;
    }

    public void setStuNumber(int stuNumber) {
        this.stuNumber = stuNumber;
    }
    //重写工作方法

    @Override
    public void work() {
        System.out.println("学生的工作是学习");
    }
}


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马