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

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Java基礎入門之多態(tài)和對象類型轉(zhuǎn)換

一、多態(tài)

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

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

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

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

運行的結(jié)果是:

 
 
 
 
  1. 我是一個櫻桃!重量為:66.0g 
  2. 我是一個蘋果!重量為:250.0g 

我是一個櫻桃!重量為:66.0g我是一個蘋果!重量為:250.0g

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

二、對象類型轉(zhuǎn)換

1.子類對象是可以自動轉(zhuǎn)換成父類。

2.父類轉(zhuǎn)換成子類對象就需要強制轉(zhuǎn)換。

例如:

 
 
 
 
  1. //定義接口Fruit 
  2. interface Fruit{ 
  3.     void info();//定義抽象方法info() 
  4. //定義Cherry類實現(xiàn)Fruit接口 
  5. class Cherry implements Fruit{ 
  6.     double weight=66;//weight屬性為重量 
  7.     //實現(xiàn)info()方法 
  8.     public void info(){ 
  9.         System.out.println("我是一個櫻桃!"+"重量為:"+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類的實例對象 
  18.         fruitInfo(f1);//調(diào)用fruitInfo()方法,把f1參數(shù)傳入 
  19.     //定義靜態(tài)方法fruitInfo(),接受一個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.   } 

運行的結(jié)果是:

從上面可以看出編譯出錯了,調(diào)用fruitInfo()方法傳入Cherry對象,方法參數(shù)是Fruit類型的,把Cherry的子類當作父類使用導致程序編譯出現(xiàn)錯誤,程序在運行到f.pro()這行代碼發(fā)現(xiàn)這個方法沒有定義。因為傳入的是Cherry類,在Cherry類中定義了pro()方法需要強制轉(zhuǎn)換才可以運行,就是把Fruit類型變量強制轉(zhuǎn)換成Cherry類型。

修改后代碼如下所示:

 
 
 
 
  1. //定義靜態(tài)方法fruitInfo(),接受一個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()方法 

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

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

三、instanceof關鍵字

1.instanceof關鍵字作用

判斷一個實例對象是否屬于一個類,它的語法如下:

 
 
 
 
  1. 對象 instanceof 類 

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

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

四、總結(jié)

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

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

對象類型轉(zhuǎn)換是子類對象是可以自動轉(zhuǎn)換成父類、父類轉(zhuǎn)換成子類對象就需要強制轉(zhuǎn)換。

instanceof關鍵字用來判斷一個實例對象是否屬于一個類,希望大家通過本文的學習,對你有所幫助!


網(wǎng)站欄目:Java基礎入門之多態(tài)和對象類型轉(zhuǎn)換
轉(zhuǎn)載源于:http://www.5511xx.com/article/cdhsipj.html