2020.7.20

一、今日学习内容

    1、Java中的继承

    (1)Java中的继承使用关键字“extends"表示:class  子类  extends  父类{ }

            继承的作用:使用继承,子类可以拥有父类中的非私有属性,也就是说父类中的非私有属性可以供子类共享,这样,多个类中相同的属性就可以抽取出来作为父类管理。(Java不支持多继承,一个类只能继承一个类,即子类只能继承一个父类,但是一个父类可以被多个子类继承)

   (2)super关键字

               在Java继承中,子类可以使用super关键字调用父类的非私有属性和非私有方法,还可以调用父类的非私有构造方法。

                a.使用super关键字调用父类属性:super.父类属性     (其中,super 关键字可以省喝下面是子类调用父类属性的举例。)

                父类: Person 定义如下:

public class Person{
   public String name;
   public string sex;
   public int age;
   public String getName() {
     return name;
   }
    public void setName (String name) {
       this.name =name;
    }
    public String  getSex() {
       return sex;
    }
    public void setSex(String sex) {
       this.sex = sex;
    }
    public int getAge() {
       return age ;
    }
    public void setAge(int age){
       this.age=age;
    }
}

       定义好了Person类作为父类后,接着定义子类Student

        使用super关键字调用属性

public class Student extends Person {
    private String deparetment;  //系别
    private String specialty;  //专业
    String name = super. name;   //调用父类的属性name
}

        使用super关键字调用方法

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

        (super关键字可以省略)

      b.使用super调用父类的构造方法:使用super调用父类的构造方法与使用this 调用构造方法有异曲同工之处,如果使用super(),则是调用父类的无参构造方法:如果           super (参数),则是调用父类有参数的构造方法。

         示例:调用父类构造方法

public class Person {
     private String name;
     private int age;
     public Person() {}
     public Person(String name,int age) {
        this .name = name;
        this. age=age;
     }
}
class Student extends Person{
      public Student() {
          super("sky", 26); //调用父类构造方法
      }
}

      c.子类和父类构造方法的执行顺序

            (1)子类默认调用父类的无参构造方法,也就是说,子类的构造方法中会默认调用super()并且在构造方法的第一行。     

            (2) 如果子类只提供有参的构造方法,则必须在子类的构造方法中调用父类的构造方法。

            (3)执行完父类的构造方法后,再调用本类中的构造方法.

        示例:

public Class Person {
     private String name;
     private 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("子类有参构造方法");
     }
}

            输出结果:父类有参构造方法

            子类有参构造方法 
从打印结果可以看出,先调用父类的构造方法,再调用子类的构造方法
为了更好地继承类,每个父类都应该提供无参的构造函数,避免因没有构造函数造成继承错误。
二、遇到的问题
没有遇到什么问题
三、明日计划
明天继续学习第五章的内容
原文地址:https://www.cnblogs.com/wmdww/p/13348040.html