第二十二天

学习了Java的继承特点和方法和super关键字

明天学习多态变化

一、java中的继承使用关键字“extends”标识,公式如下:

class 子类 extends 父类{}

继承的作用:使用继承,子类可以拥有父类中的非私有属性,也就是说父类中的非私有属性可以
供子类共享,这样多个类中相同的属性就看可以抽出来作为父类管理。

(1)子类共享父类中的非私有属性

public class Student extends Person{
    public static void main(String[] args) {
        Student s=new Student();
        String str =s.name;
    }
}

(2)子类可以拥有父类中的非私有方法

public class Student extends Person{
    public static void main(String[] args) {
        Student s=new Student();
        String str =s.name;
        s.setName("无证云");
        s.setAge(25);
    }
}

Java不支持多继承,一个类只能继承一个类,即子类只能继承一个父类,但是一个父类可以被多个子类继承。

二、super关键字

子类可以使用super关键字调用父类的非私有属性和私有方法,还可以调用父类的忒私有构造方法
1.使用super调用父类属性:super.父类属性(super关键字可以省略)

public class Student extends Person{
    private String deparement;//系别
    private String specialty;//专业
    String name=super.name;//调用父类的属性
    public void test() {
        super.getAge();  //调用父类的方法
    }
}

2.使用super调用父类的构造方法
super(),调用父类的无参构造方法;

super(参数),调用父类的有参数的构造方法

public class Student extends Person{
    private String deparement;//系别
    private String specialty;//专业
    String name=super.name;//调用父类的属性
    public void test() {
        super.getAge();  //调用父类的方法
    }
    public Student() {
        super("sky",26);//调用父类构造方法
    }
}

3.子类和父类构造方法的执行顺序
(1)子类默认调用父类的无参构造方法,也就是说,子类的构造方法中会默认调用super(),并且在构造方法的第一行
(2)如果子类只提供有参的构造方法,则必须在子类的构造方法中调用父类的构造方法
(3)执行完父类的构造方法之后,再调用本类的构造方法。

public class Person {
    public String name;
    public String sex;
    public int age;
    public Person() {
        System.out.println("父类无参构造方法");
    }
    public Person(String name,int age) {
        this.name=name;
        this.age=age;
        System.out.println("父类无参构造方法");
    }
    public static void main(String[] args) {
        Student stu=new Student();
    }
    }
class Student extends Person {
    public Student() {
        super("sky",26);
        System.out.println("子类有参构造方法");
    }
}

为了更好的继承类,每个父类都应该提供无参的构造方法,避免没有构造方法而造成的继承错误。

posted @ 2020-07-27 21:23  yasai  阅读(72)  评论(0编辑  收藏  举报