Day09 多型 抽象方法 藉口

2021-08-07 16:49:44 字數 1931 閱讀 3488

今天的內容是基礎班中的乙個重點。

多型知識點1.多型的三個前提:繼承關係,方法重寫,父類引用指向子類物件。

知識點2:成員變數在多型中:編譯看左邊,執行看左邊。

成員方法在多型中:編譯看左邊,執行看右邊。

靜態方法在多型中:編譯看左邊,執行看右邊。

知識點3:超人的例子,向上轉型和向下轉型

class demo3_superman 

}class person

}class superman extends person

public void fly()

}

多型的優點:利於擴充套件 利於維護

多型的缺點:

class demo4_animal 

/*public static void method(cat c)*/

public static void method(animal a)else if (a instanceof dog)

}}class animal

}class cat extends animal

public void catchmouse()

}class dog extends animal

public void lookhome()

}

抽象類:

9.9 a:abstract class抽象類  public abstract void eat()抽象方法

b:抽象類不一定有抽象方法,有抽象方法的類一定在抽象類

c:抽象類不能例項化,如果例項化可以參開多型

d:抽象類的子類:只能是兩種情況:① 抽象類 ② 重寫了所有的抽象方法

class demo1_abstract 

}abstract class animal

class cat extends animal

}

9.10 抽象類成員特點

抽象類的特點:a 成員變數:既可以變數 又可以常量,abstract 不能修飾變數

b:構造方法:有 c  成員方法:既可以抽象,也可以非抽象

抽象方法特性:抽象方法就是強制子類做的事情 

9.12 9.13 9.14 三個練習 找最後乙個練習

abstract class teacher

public teacher (string name, int age)

public void setname(string name)

public string getname()

public void setage(int age)

public int getage()

public abstract void teach();

}class baseteacher extends teacher

public baseteacher (string name, int age)

public void teach()

}

這個關於繼承中有兩個點需要記住:第一是子類繼承時候的有參構造方法是super(..),第二是在子類裡面 有時候會用到("名字是「+this,getname()),父類中中是直接加name 

9.15:面試題

①:乙個沒有抽象方法的類,能不能定義抽象類 。答案:可以的,作用就是不能直接建立物件,如果想建立物件就建立子類。

②:abstract不能喝static/final/private共存

9.16 介面

介面:a:inte***ce 介面名{} 介面中的方法都是抽象的

b:class 類名 implements 介面名{} 

c:介面不能例項化,可以用多型的方法

d:介面的子類,可以是抽象類,沒有意義,可以是具體類 ,重寫所有的抽象方法。

day09 多型總結

2019.07.09 day09 多型 判斷多型的四個原則 1.跨類且繼承 2.子類重寫長輩類的方法 3.子類物件賦值給長輩的引用 4.用長輩的引用打點呼叫方法 注意 能呼叫出那些方法取決於左邊類或介面的左邊 長輩類或長輩介面 呼叫方法的內容取決於等號右邊 如果重寫過,就執行子類重寫後方法的內容 如...

多型 抽象 藉口

1 多型 1 多型的存在是降低 之間的耦合性 2 如果乙個方法的引數型別是乙個類,在在呼叫這個方法時,傳入的引數可以是該類的物件,也可以是該類子類的物件。3 如果乙個方法的返回值型別是個類,在呼叫該方法時,返回值可以是該類的物件,也可以是該類子類的物件。public class animal pub...

day09 繼承 super this 抽象類

子父類 現了同名的成員變數時,在子類中需要訪問父類中非私有成員變數時,需要使用 super 關鍵字,修飾父類成員變數,類似於之前學過的 this class father class sonextends father class extendsdemo03 演示結果 fu num 6zi num ...