1. 程式人生 > 實用技巧 >Kubernetes叢集搭建前篇(一)

Kubernetes叢集搭建前篇(一)

繼承

繼承的本質時對某一批類的抽象

extends意思為擴充套件,子類是父類的擴充套件

java中類只有單繼承,沒有多繼承。子類只有一個父類,一個父類可以有多個子類

子類繼承了父類,就會擁有父類的所有方法

package OOP02.Demon2;

public class Person {
    public void say(){
        System.out.println("喵了一聲");
    }
    private int money = 100;//父類私有
}
package OOP02.Demon2;
      //學生繼承了Person
public class Student extends Person{
    //學生方法為空
}
package OOP02.Demon2;

public class Aplication {
    public static void main(String[] args) {
        Student student = new Student();
        student.say(); //喵了一聲
        
      // System.out.println(student.money);這句話則會報錯,因為money為父類私有,沒有繼承給字類
    }
}

Application中可以直接呼叫student.say(),Student繼承了Person的方法。

父類私有的屬性子類無法繼承。

ctrl+h可以檢視繼承的關係。

在java中所有的類都預設直接或間接繼承了object類。

super

  1. super呼叫父類的構造方法,必須在構造方法的第一個
  2. super必須只能出現在子類的方法、構造方法中(不可能調到object去對吧)
  3. super和this不能同時呼叫構造方法,因為二者都要求寫在構造器的第一行。

通過下面程式碼實踐更好地理解:(Student是Person的子類,因為學生屬於人嘛)

從程式理解super

父類↓Person

package OOP02.Demon2;

public class Person {
protected String name = "陽";

    public Person() {
        System.out.println("父構造執行");
    }
    //若此處使用有參構造器則無參構造器消失,
    //子類的無參構造器由於需要呼叫父類無參構造器,
    //會導致子類無參構造器報錯!!
    /*
    若此處只是用有參構造器器
    為了子類無參構造器能夠執行
    需要在super()中呼叫父類有參構造器!!
    如果super()不寫預設呼叫無參!!
     */

    //########################################
public void print(){
    System.out.println("Person");

}
}

子類↓Student

package OOP02.Demon2;
      //學生繼承了Person
public class Student extends Person{

            public Student() {
         //這裡有一句隱藏程式碼,super(),呼叫了父類的1
                  super();
         //呼叫父類的構造器必須在子類構造器的第一行
                  System.out.println("子構造執行");
            }


            public String name = "林";
public void name(String name){
      System.out.println(name);// 形式引數name
      System.out.println(this.name);//學生類定義的name
      System.out.println(super.name);//父類定義的name


}//##################################################
            public void print(){
                  System.out.println("Student");}
           public void text(){
          print();  //學生類裡的
          this.print();//學生類裡的
          super.print();//人 類裡的
          //注意若父類方法為私有的super也無法呼叫
           }
}

除錯↓Application

package OOP02.Demon2;

public class Aplication {
    public static void main(String[] args) {
        Student student = new Student();
        student.name("fa");
        /*
        結果為fa
             林
             陽
         */
//#######################################################
        student.text();
        /*結果為
        Student
        Student
        Person

         */
    }
}

super與this的對比

(指)代表的(具體)物件不同:

this:本身呼叫者的物件

super:代表父輩物件的應用

前提不同:

this:沒有繼承也可以使用,因為只涉及類本身

super:只能繼承條件下使用,你得有個爹才能呼叫爹

構造方法不同:

this():本類的構造?????有什麼用?{顧名思義作用是呼叫一個自己的構造器,例如自己寫個有參構造器,然後使用this()在構造器中呼叫自己寫的那個有參構造器}????????

super():父類的構造