真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Java中多態(tài)和抽象類的實現(xiàn)方式

這篇文章主要講解了“Java中多態(tài)和抽象類的實現(xiàn)方式”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Java中多態(tài)和抽象類的實現(xiàn)方式”吧!

創(chuàng)新互聯(lián)建站是專業(yè)的南崗網(wǎng)站建設(shè)公司,南崗接單;提供網(wǎng)站設(shè)計制作、成都網(wǎng)站制作,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進行南崗網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!

多態(tài)

1.要實現(xiàn)多態(tài),那么必須存在父子關(guān)系(繼承關(guān)系或者實現(xiàn)接口)

2.實現(xiàn)多態(tài)的方式:將父類對象的聲明指向子類對象,例如Pet pet = new Dog();

例如:

/*

這是一個類名為Pet的父類

*/

public class Pet {

public void print() {

System.out.println("----調(diào)用Pet父類的print方法-----");

}

}

/*

這是類名為Dog的第一個子類

*/

public class Dog extends Pet{

public void print() {

System.out.println("-----調(diào)用Dog子類的print方法-----");

}

}

/*

這是類名為Cat的第二個子類

*/

public class Cat extends Pet{

public void print() {

System.out.println("-----調(diào)用Cat子類的print方法----");

}

}

/*

這是類名為Test的測試類

*/

public class Test {

public static void main(String[] args) {

Dog dog = new Dog();

dog.print();

//這里的輸出結(jié)果為:(-----調(diào)用Dog子類的print方法-----)

Cat cat = new Cat();

cat.print();

//這里輸出的結(jié)果為:(-----調(diào)用Cat子類的print方法----)

Pet pet = new Pet();

pet.print();

//這里輸出的結(jié)果為:(-----調(diào)用Pet父類的print方法----)

//這里使用多態(tài)方法,將父類對象的聲明指向子類對象

Pet pet1 = new Dog();

pet1.print();

//這里輸出的結(jié)果為:(-----調(diào)用Dog子類的print方法-----)

}

}

3.向上轉(zhuǎn)型:向上轉(zhuǎn)型就是將子類對象賦值給父類對象的過程

4.實現(xiàn)多態(tài)以后,從表面上看調(diào)用的是父類的方法,實際調(diào)用的是子類覆蓋掉父類的方法

public class Test {

public static void main(String[] args) {

//這就是向上轉(zhuǎn)型

Pet pet1 = new Dog();

//實現(xiàn)多態(tài)以后,從表面上看調(diào)用的是父類的方法,實際調(diào)用的是子類覆蓋掉父類的方法

pet1.print();

//這里輸出的結(jié)果為:(-----調(diào)用Dog子類的print方法-----)

}

}

5.向下轉(zhuǎn)型:向下轉(zhuǎn)型就是將多態(tài)的父類對象強制轉(zhuǎn)換成子類對象的過程

6.當(dāng)需要調(diào)用子類獨有的方法和屬性的時候,必須向下轉(zhuǎn)型

public class Cat extends Pet{

public void print() {

System.out.println("-----調(diào)用Cat子類的print方法----");

}

//這是一個子類獨有的方法

public void printCat() {

System.out.println("----我是一只貓----");

}

}

public class Test {

public static void main(String[] args) {

//這就是向上轉(zhuǎn)型

Pet pet2 = new Cat();

//這就是向下轉(zhuǎn)型

Cat cat2 = (Cat)pet2;

//當(dāng)需要調(diào)用子類獨有的方法和屬性的時候,必須向下轉(zhuǎn)型

cat2.printCat();

//輸出的結(jié)果為:(----我是一只貓----)

cat2.print();

//輸出的結(jié)果為:(-----調(diào)用Cat子類的print方法----)

}

}

注意:

7.通過instanceof判斷當(dāng)前的pet2對象是否是Dog對象,如果是返回值為true,否則返回值為false

8.報錯信息為:(Exception in thread “main” java.lang.ClassCastException: com.four.Pet cannot be cast to com.four.Cat at com.four.Test.main(Test.java:18))

這是當(dāng)時遇到的一個報錯,需要特別注意。解決方法如下:

錯誤代碼為:

public class Test {

public static void main(String[] args) {

Pet pet2 = new Cat();

Dog dog2 = (Dog)pet2;

dog2.print();

}

}

修改后的正確代碼為:

public class Test {

public static void main(String[] args) {

Pet pet2 = new Cat();

//通過instanceof判斷當(dāng)前的pet2對象是否是Dog對象,如果是返回值為true,否則返回值為false

if(pet2 instanceof Dog) {

Dog dog2 = (Dog)pet2;

dog2.print();

}else if(pet2 instanceof Cat) {

Cat cat2 = (Cat)pet2;

cat2.print();

}

}

}

抽象類

1.抽象類的語法格式:修飾符 abstract class 類名{類體}

2.定義抽象方法的格式:修飾符 abstract 返回值類型 方法名(參數(shù)列表)

3.抽象類中可以定義普通方法,也可以定義抽象方法,普通類中不能定義抽象方法

4.抽象類中可以定義構(gòu)造方法,普通類也可以,當(dāng)一個普通類繼承了抽象類之后,該普通類必須實現(xiàn)抽象類中的抽象方法鄭州做婦科檢查價格 http://www.zzkdfk.com/

/*

這是一個類名為Animal的抽象類

*/

public abstract class Animal {

//這是定義的一個變量

public String name;

//這是一個名為print的普通方法

public void print() {

System.out.println("-----我的print方法-----");

}

//這是一個名為method的抽象方法

public abstract void method();

//這是一個無參的構(gòu)造函數(shù)

public Animal() {

}

//這是一個有參的構(gòu)造函數(shù)

public Animal(String name) {

this.name = name;

}

}

5.抽象類不能直接創(chuàng)建對象,如果要創(chuàng)建對象,則必須是多態(tài)的方式創(chuàng)建。

例如

錯誤案例,這樣寫會直接報錯。

/*

這是一個類名為Test的測試類

*/

public class Test {

public static void main(String[] args) {

Animal animal = new Animal();

}

}

真確案例:

/*

創(chuàng)建一個類名為Bird

*/

public class Bird extends Animal{

public void method() {

System.out.println("-----我是一只小鳥,我會飛------");

}

}

public class Test {

public static void main(String[] args) {

//利用多態(tài)的方式創(chuàng)建抽象類的對象

Animal animal = new Bird();

animal.method();

}

}

6.抽象類中的方法不能用private、final修飾,因為抽象類中的方法是用來被繼承的。

總結(jié)

抽象類的目的就是:抽象類的作用類似于“模板”,其目的是方便開發(fā)人員根據(jù)抽象類的格式來修改和創(chuàng)建新類。抽象類主要用于繼承,有利于程序的擴展。

感謝各位的閱讀,以上就是“Java中多態(tài)和抽象類的實現(xiàn)方式”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Java中多態(tài)和抽象類的實現(xiàn)方式這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!


當(dāng)前標(biāo)題:Java中多態(tài)和抽象類的實現(xiàn)方式
當(dāng)前網(wǎng)址:http://weahome.cn/article/gehihd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部