Day11多态部分-1 【1.1 多态的体现】
【1.1 多態(tài)的體現(xiàn)】
-
多態(tài)的好處:提高了擴(kuò)展性(提高代碼的共用性);
1.定義:某一類(lèi)事物的多種存在形態(tài):
java語(yǔ)言中含有【方法重載】和【對(duì)象多態(tài)】?jī)煞N形式的多態(tài)
貓 x = new 貓()
動(dòng)物 x = new 貓()//new 貓()
來(lái)了一只真實(shí)的小貓 我說(shuō) 這動(dòng)物不錯(cuò),
new 的這個(gè)實(shí)體既具備貓的類(lèi)型,也具備動(dòng)物的類(lèi)型
但是有個(gè)前提,貓必須是動(dòng)物的一種;
2.當(dāng)類(lèi)與類(lèi)產(chǎn)生關(guān)系:
那么這個(gè)實(shí)體還具備其他類(lèi)型,這個(gè)事物存在多種形態(tài)-->多態(tài);
多態(tài)我們強(qiáng)調(diào)的是在java中,對(duì)象上的體現(xiàn);
3.其實(shí)函數(shù)也具備多態(tài)性,重載,同一個(gè)名字,體現(xiàn)形態(tài)不一樣
(方法的重載也是多態(tài)的一種);
- + -
api里面所有的類(lèi)和接口關(guān)系都是
以面向?qū)ο蟮膸状筇卣鳛殚_(kāi)發(fā)基準(zhǔn)的,不了解的話連api都看不到;
//這叫前期預(yù)先調(diào)用功能,后期定義子類(lèi)去實(shí)現(xiàn)功能,并把子類(lèi)作為參數(shù),傳遞進(jìn)來(lái),實(shí)現(xiàn)了后期拓展性
-
public static void main(String[] args) {
?Animal a1 =new Dog();//繼承了動(dòng)物,都是動(dòng)物的一種,即是貓也是動(dòng)物
??Animal a2 =new Cat();
??test(a1);//3.方法名,將對(duì)象a1傳入
??test(a2);//傳入什么對(duì)象輸出什么方法
??Animal a3 =new Pig();//因?yàn)槔^承了父類(lèi),所以不用寫(xiě)重載方法,用回引用Animal的重載方法即可
??test(a3);
//多態(tài)的好處:提高程序的拓展性
//這叫前期預(yù)先調(diào)用功能,后期定義子類(lèi)去實(shí)現(xiàn)功能,并把子類(lèi)作為參數(shù),傳遞進(jìn)來(lái),實(shí)現(xiàn)了后期拓展性
public static void test(Animal sx){//1.Animal引用sx對(duì)象
sx.eat();//2.對(duì)象引用Animal的eat方法
}
}
abstract?class Animal{//抽象的作用強(qiáng)制子類(lèi)重寫(xiě)方法
abstract void eat();
}
class Cat extends?Animal{
public void eat(){
System.out.println("吃魚(yú)(重寫(xiě)Animal的eat方法)");
}
}
class Dog extends Animal{
public void eat(){
System.out.println("吃骨頭(重寫(xiě)Animal的eat方法)");
}
}
//--------------百年后出現(xiàn)了另一種動(dòng)物 豬
class Pig extends Animal{
public void eat() {
System.out.println("吃飼料(重寫(xiě)Animal的eat方法)");
}
public void gongdi(){
System.out.println("拱地");
}
}
多態(tài)的表現(xiàn):一個(gè)對(duì)象在不同的狀態(tài)下有多種形態(tài):如你,對(duì)妻子來(lái)說(shuō)你是丈夫,
對(duì)老師來(lái)說(shuō)你是學(xué)生,對(duì)父母來(lái)說(shuō)你是兒子,對(duì)老板來(lái)說(shuō)你是員工多態(tài)比喻:事物的多種存在:貓是動(dòng)物也叫貓,
其它有個(gè)名字叫小明,那么我叫它貓-動(dòng)物-小明都三個(gè)名都是指它 ? ??
-
- + -
總結(jié)
以上是生活随笔為你收集整理的Day11多态部分-1 【1.1 多态的体现】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: [基础题] * 9.(*)设计一个St
- 下一篇: Day11多态部分-2 【1.2 多态的