今天的內容是基礎班中的乙個重點。
多型知識點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 三個練習 找最後乙個練習
這個關於繼承中有兩個點需要記住:第一是子類繼承時候的有參構造方法是super(..),第二是在子類裡面 有時候會用到("名字是「+this,getname()),父類中中是直接加nameabstract 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()
}
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 ...