偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

[[376592]]

一、多態(tài)

1.假設(shè)實現(xiàn)一個動物發(fā)出的叫聲方法,我們知道不同的動物,它們的叫聲是不一樣的。當(dāng)在方法中傳入一個參數(shù)類型,例如貓的叫聲、狗的叫聲。在同一個方法,當(dāng)參數(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()方法。“Fruit 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的子類當(dāng)作父類使用導(dǎo)致程序編譯出現(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關(guān)鍵字

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

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

  1. 對象 instanceof 類 

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

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

四、總結(jié)

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

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

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

 

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

 

責(zé)任編輯:武曉燕 來源: Java進階學(xué)習(xí)交流
相關(guān)推薦

2023-04-03 10:04:36

Java變量類型

2020-10-29 13:40:52

Java基礎(chǔ)

2021-01-28 08:34:30

Java對象定義

2023-03-27 10:04:27

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

2020-12-24 08:36:14

JavaJava基礎(chǔ)

2021-03-25 10:02:31

Java基礎(chǔ)字符串Java技術(shù)

2020-10-26 13:46:07

Java基礎(chǔ)入門篇

2010-01-14 14:12:42

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

2016-09-18 21:14:54

JavascriptPromiseWeb

2009-07-14 09:06:08

Java對象類型轉(zhuǎn)換

2023-01-17 14:01:19

JavaScript類型轉(zhuǎn)換字符串

2021-04-13 08:42:29

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

2022-05-19 09:01:08

TypeScript元組對象

2011-05-23 16:40:00

python

2020-11-19 10:36:16

Java基礎(chǔ)方法

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基礎(chǔ)Calendar類DateFormat類

2021-04-08 10:10:46

JavaSimpleDateFList接口
點贊
收藏

51CTO技術(shù)棧公眾號