成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java基礎入門之多態(tài)和對象類型轉換

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

[[376592]]

一、多態(tài)

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

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

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);//調用fruitInfo()方法,把f1參數(shù)傳入 
  24.         fruitInfo(f2);//調用fruitInfo()方法,把f2參數(shù)傳入 
  25.     //定義靜態(tài)的fruitInfo()方法,接受一個Fruit的參數(shù)f 
  26.     public static void fruitInfo(Fruit f){ 
  27.         f.info(); 
  28.   } 

運行的結果是:

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

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

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

二、對象類型轉換

1.子類對象是可以自動轉換成父類。

2.父類轉換成子類對象就需要強制轉換。

例如:

  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("產地:浙江"); 
  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);//調用fruitInfo()方法,把f1參數(shù)傳入 
  19.     //定義靜態(tài)方法fruitInfo(),接受一個Fruit參數(shù)f 
  20.     public static void fruitInfo(Fruit f){ 
  21.         f.info();//調用傳入?yún)?shù)f的info()方法 
  22.         f.pro();//調用傳入?yún)?shù)f的pro()方法 
  23.   } 

運行的結果是:

 

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

修改后代碼如下所示:

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

再次運行的結果是:

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

三、instanceof關鍵字

1.instanceof關鍵字作用

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

  1. 對象 instanceof 類 

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

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

四、總結

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

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

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

 

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

 

責任編輯:武曉燕 來源: Java進階學習交流
相關推薦

2023-04-03 10:04:36

Java變量類型

2020-10-29 13:40:52

Java基礎

2021-01-28 08:34:30

Java對象定義

2023-03-27 10:04:27

數(shù)據(jù)類型浮點型布爾型

2020-12-24 08:36:14

JavaJava基礎

2021-03-25 10:02:31

Java基礎字符串Java技術

2020-10-26 13:46:07

Java基礎入門篇

2009-07-14 09:06:08

Java對象類型轉換

2010-01-14 14:12:42

網(wǎng)橋類型鏈路層

2016-09-18 21:14:54

JavascriptPromiseWeb

2023-01-17 14:01:19

JavaScript類型轉換字符串

2021-04-13 08:42:29

C語言數(shù)據(jù)類型轉換自動類型轉換

2022-05-19 09:01:08

TypeScript元組對象

2011-05-23 16:40:00

python

2020-11-19 10:36:16

Java基礎方法

2009-06-25 14:20:01

Java枚舉類型

2011-06-01 16:31:23

枚舉

2020-11-20 09:36:43

Java對象

2021-04-05 08:11:04

Java基礎Calendar類DateFormat類

2021-04-08 10:10:46

JavaSimpleDateFList接口
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产一级视频在线 | 看av网址 | 日批日韩在线观看 | 亚洲电影免费 | 国内自拍偷拍 | 午夜爱爱毛片xxxx视频免费看 | 天天精品在线 | 日日摸夜夜添夜夜添精品视频 | 成人午夜av | 亚洲 91| 久久综合伊人一区二区三 | 在线欧美一区 | 日韩在线视频观看 | 国产精品www | 欧美激情精品久久久久久免费 | 亚洲欧美男人天堂 | 精品国产18久久久久久二百 | 亚洲欧美视频 | 亚洲综合99| 国产成人艳妇aa视频在线 | 成人精品鲁一区一区二区 | 久久亚洲春色中文字幕久久久 | 国产区久久 | 成人片免费看 | 国产乱人伦 | 成人h电影在线观看 | 午夜精品91 | 欧美一级在线 | 少妇特黄a一区二区三区88av | 国产日韩在线观看一区 | 久久久久国产一区二区三区四区 | 日本三级电影在线观看视频 | 成人免费一区二区 | 国产一区二区三区在线 | 一级黄色片网站 | 夜夜久久| 国产精品久久久久久久久久 | 一级毛片免费视频 | 成人亚洲在线 | 成人av高清 | 男人午夜视频 |