1. 程式人生 > 資訊 >買 1 件享 10 件:高夫男士竹葉淨源控油護膚套裝 59 元

買 1 件享 10 件:高夫男士竹葉淨源控油護膚套裝 59 元

1 繼承的基本概念

(1)可以先建立公共屬性的父類,然後再根據各子類的不同特性建立其各個不同屬性和方法。

(2)繼承得到的類為子類,被繼承的類為父類,也叫超類。

(3)Java不支援多繼承(子類只能有一個父類)。


2 Object類及其方法

(1)Java中的所有類都預設繼承Object類,Object是所Java所有類的父類。

(2)定義:public class Object

(3)Object是類層次結構的根類,每個類都使用Object作為超類,所有物件(包括陣列)都實現這個類的方法。

(4)Object類的常用方法:


3 物件中的克隆

(1)克隆的限制

  • 被克隆的類必須自己實現Cloneable介面,以指示Object.clone()方法可以合法地對類例項進行按欄位賦值。

  • 實現Cloneable介面的類應該使用公共方法重寫Object,clone(它是受保護的)。

  • 在Java.lang.Object類中克隆方法的定義:

protected Object clone()
throws CloneNotSupportedException

建立並返回此物件的一個副本,表明是一個受保護的方法,同一個包中可見。

(2)淺層克隆和深層克隆

  • 漸層克隆:主要複製基本物件的值

  • 深層克隆:當類存在聚合關係時,克隆必須考慮聚合物件的克隆,可以複製引用型別的欄位。


4 Java中的繼承

(1)公式:class 子類 extends 父類{}

(2)作用:使用繼承,子類可以擁有父類中的非私有屬性,這樣可以使多個類中相同的屬性提取出來作為父類管理。

  • 子類共享父類中的非私有屬性

  • 子類可以擁有父類中的非私有方法

(3)Java不支援多繼承,子類只能繼承一個父類,但是一個父類可以被多個子類繼承。


5.super關鍵字

子類可以使用super關鍵字呼叫父類的非私有屬性和非私有方法,還可以呼叫父類的非私有構造方法

 1 public class Person {
 2     public String name;
 3     public String sex;
 4     public int age;
 5     public String getName() {
 6         return name;
 7     }
 8     public void setName(String name) {
 9         this.name=name;
10     }
11     public String getSex() {
12         return sex;
13     }
14     public void setSex(String sex) {
15         this.sex=sex;
16     }
17     public int getAge() {
18         return age;
19     }
20     public void setAge(int age) {
21         this.age=age;
22     }
23 }

(1)使用super關鍵字呼叫父類屬性

語法:super.父類屬性(super關鍵字可以省略)

1 public class Student extends Person{
2     private String deparement;
3     private String specialty;
4     String name1=super.name; //呼叫父類屬性
5     String name2=name;  //呼叫父類屬性
6 }

(2)使用super呼叫父類方法

語法:super.父類方法 (super關鍵字可以省略)

 1 public class Student extends Person{
 2     private String deparement;
 3     private String specialty;
 4     public void test1() {
 5         super.getAge();  //呼叫父類方法
 6     }
 7     public void test2() {
 8         getAge();  //呼叫父類方法
 9     }
10 }

(3)使用super呼叫父類的構造方法

如果使用super(),則呼叫父類的無參構造方法;如果使用super(引數),則呼叫父類的有參構造方法

 1 public class Person{
 2     public String name;
 3     public int age;
 4     public Person() {
 5     }
 6     public Person(String name,int age) {
 7         this.name=name;
 8         this.age=age;
 9     }
10 }
11 public class Student extends Person{
12     public student() {
13         super("sky",26); //呼叫父類構造方法
14     }
15 }

(4)子類和父類構造方法的執行順序

  • 子類預設呼叫父類的無參構造方法,即子類的構造方法中會預設呼叫super()並且在構造方法的第一行。

  • 如果子類只提供有參的構造方法則,必須在子類的構造方法中呼叫父類的構造方法。

  • 執行完父類的構造方法後,再呼叫本類中的構造方法。