日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
Java基礎(chǔ)入門(mén)之多態(tài)和對(duì)象類(lèi)型轉(zhuǎn)換

一、多態(tài)

1.假設(shè)實(shí)現(xiàn)一個(gè)動(dòng)物發(fā)出的叫聲方法,我們知道不同的動(dòng)物,它們的叫聲是不一樣的。當(dāng)在方法中傳入一個(gè)參數(shù)類(lèi)型,例如貓的叫聲、狗的叫聲。在同一個(gè)方法,當(dāng)參數(shù)不同它們的執(zhí)行結(jié)果各不相同,這就是多態(tài)。

2.多態(tài)是把子類(lèi)對(duì)象賦給父類(lèi)引用時(shí),調(diào)用重寫(xiě)的方法時(shí),表示的是子類(lèi)的行為。

3.怎么實(shí)現(xiàn)多態(tài)例子

 
 
 
 
  1. //定義接口Fruit 
  2. interface Fruit{ 
  3.     void info();//定義抽象方法info() 
  4. //定義Cherry類(lèi)實(shí)現(xiàn)Fruit接口 
  5. class Cherry implements Fruit{ 
  6.     double weight=66;//weight屬性為重量 
  7.     //實(shí)現(xiàn)info()方法 
  8.     public void info(){ 
  9.         System.out.println("我是一個(gè)櫻桃!"+"重量為:"+weight+"g"); 
  10.   } 
  11. //定義Apple類(lèi)實(shí)現(xiàn)Fruit接口 
  12. class Apple implements Fruit{ 
  13.     double weight=250;//weight屬性為重量 
  14.     //實(shí)現(xiàn)info()方法 
  15.     public void info(){ 
  16.         System.out.println("我是一個(gè)蘋(píng)果!"+"重量為:"+weight+"g"); 
  17.   } 
  18. public class p30 { 
  19.     public static void main(String[] args) { 
  20.         // TODO Auto-generated method stub 
  21.         Fruit f1=new Cherry();//創(chuàng)建Cherry對(duì)象,F(xiàn)ruit類(lèi)型變量f1引用 
  22.         Fruit f2=new Apple();//創(chuàng)建Apple對(duì)象,F(xiàn)ruit類(lèi)型變量f2引用 
  23.         fruitInfo(f1);//調(diào)用fruitInfo()方法,把f1參數(shù)傳入 
  24.         fruitInfo(f2);//調(diào)用fruitInfo()方法,把f2參數(shù)傳入 
  25.     //定義靜態(tài)的fruitInfo()方法,接受一個(gè)Fruit的參數(shù)f 
  26.     public static void fruitInfo(Fruit f){ 
  27.         f.info(); 
  28.   } 

運(yùn)行的結(jié)果是:

 
 
 
 
  1. 我是一個(gè)櫻桃!重量為:66.0g 
  2. 我是一個(gè)蘋(píng)果!重量為:250.0g 

我是一個(gè)櫻桃!重量為:66.0g我是一個(gè)蘋(píng)果!重量為:250.0g

從上面代碼中,定義了一個(gè)Fruit接口,定義了抽象方法info()。定義Cherry類(lèi)和Apple類(lèi)實(shí)現(xiàn)Fruit接口,定義變量weight屬性和實(shí)現(xiàn)info()方法。“Fruit f1=new Cherry()、Fruit f2=new Apple()”實(shí)現(xiàn)子類(lèi)對(duì)象賦給父類(lèi)引用,調(diào)用fruitInfo()方法,父類(lèi)引用了兩個(gè)子類(lèi)對(duì)象分別傳入f1和f2參數(shù)。

二、對(duì)象類(lèi)型轉(zhuǎn)換

1.子類(lèi)對(duì)象是可以自動(dòng)轉(zhuǎn)換成父類(lèi)。

2.父類(lèi)轉(zhuǎn)換成子類(lèi)對(duì)象就需要強(qiáng)制轉(zhuǎn)換。

例如:

 
 
 
 
  1. //定義接口Fruit 
  2. interface Fruit{ 
  3.     void info();//定義抽象方法info() 
  4. //定義Cherry類(lèi)實(shí)現(xiàn)Fruit接口 
  5. class Cherry implements Fruit{ 
  6.     double weight=66;//weight屬性為重量 
  7.     //實(shí)現(xiàn)info()方法 
  8.     public void info(){ 
  9.         System.out.println("我是一個(gè)櫻桃!"+"重量為:"+weight+"g"); 
  10.     //定義pro()方法 
  11.     void pro(){ 
  12.         System.out.println("產(chǎn)地:浙江"); 
  13.   } 
  14. public class p31 { 
  15.     public static void main(String[] args) { 
  16.         // TODO Auto-generated method stub 
  17.         Fruit f1=new Cherry();//創(chuàng)建Cherry類(lèi)的實(shí)例對(duì)象 
  18.         fruitInfo(f1);//調(diào)用fruitInfo()方法,把f1參數(shù)傳入 
  19.     //定義靜態(tài)方法fruitInfo(),接受一個(gè)Fruit參數(shù)f 
  20.     public static void fruitInfo(Fruit f){ 
  21.         f.info();//調(diào)用傳入?yún)?shù)f的info()方法 
  22.         f.pro();//調(diào)用傳入?yún)?shù)f的pro()方法 
  23.   } 

運(yùn)行的結(jié)果是:

從上面可以看出編譯出錯(cuò)了,調(diào)用fruitInfo()方法傳入Cherry對(duì)象,方法參數(shù)是Fruit類(lèi)型的,把Cherry的子類(lèi)當(dāng)作父類(lèi)使用導(dǎo)致程序編譯出現(xiàn)錯(cuò)誤,程序在運(yùn)行到f.pro()這行代碼發(fā)現(xiàn)這個(gè)方法沒(méi)有定義。因?yàn)閭魅氲氖荂herry類(lèi),在Cherry類(lèi)中定義了pro()方法需要強(qiáng)制轉(zhuǎn)換才可以運(yùn)行,就是把Fruit類(lèi)型變量強(qiáng)制轉(zhuǎn)換成Cherry類(lèi)型。

修改后代碼如下所示:

 
 
 
 
  1. //定義靜態(tài)方法fruitInfo(),接受一個(gè)Fruit參數(shù)f 
  2.     public static void fruitInfo(Fruit f){ 
  3.         Cherry f1=(Cherry)f; 
  4.         f1.info();//調(diào)用傳入?yún)?shù)f的info()方法 
  5.         f1.pro();//調(diào)用傳入?yún)?shù)f的pro()方法 

再次運(yùn)行的結(jié)果是:

 
 
 
 
  1. 我是一個(gè)櫻桃!重量為:66.0g 
  2. 產(chǎn)地:浙江 

三、instanceof關(guān)鍵字

1.instanceof關(guān)鍵字作用

判斷一個(gè)實(shí)例對(duì)象是否屬于一個(gè)類(lèi),它的語(yǔ)法如下:

 
 
 
 
  1. 對(duì)象 instanceof 類(lèi) 

2.在進(jìn)行引用類(lèi)型轉(zhuǎn)換前先使用instanceof關(guān)鍵字判斷,例如:

 
 
 
 
  1. if( f instanceof Cherry){   //如果f指的是Cherry對(duì)象類(lèi)型時(shí),返回的是true。 
  2.     Cherry f1=(Cherry)f; 

四、總結(jié)

本文主要介紹了多態(tài)、對(duì)象類(lèi)型轉(zhuǎn)換、instanceof關(guān)鍵字。

多態(tài)是子類(lèi)對(duì)象賦給父類(lèi)引用時(shí),調(diào)用重寫(xiě)的方法時(shí),表示的是子類(lèi)的行為。通過(guò)怎么實(shí)現(xiàn)多態(tài)例子幫助理解這個(gè)用法。

對(duì)象類(lèi)型轉(zhuǎn)換是子類(lèi)對(duì)象是可以自動(dòng)轉(zhuǎn)換成父類(lèi)、父類(lèi)轉(zhuǎn)換成子類(lèi)對(duì)象就需要強(qiáng)制轉(zhuǎn)換。

instanceof關(guān)鍵字用來(lái)判斷一個(gè)實(shí)例對(duì)象是否屬于一個(gè)類(lèi),希望大家通過(guò)本文的學(xué)習(xí),對(duì)你有所幫助!


分享題目:Java基礎(chǔ)入門(mén)之多態(tài)和對(duì)象類(lèi)型轉(zhuǎn)換
瀏覽地址:http://m.5511xx.com/article/cdhsipj.html