日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java接口,多态,向上转型,向下转型的意义

發布時間:2024/1/8 java 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java接口,多态,向上转型,向下转型的意义 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

接口

官方解釋: Java接口是一系列方法的聲明,是一些方法特征的集合,一個接口只有方法的特征沒有方法的實現 ,因此這些方法可以在不同的地方被不同的類實現,而這些實現可以具有不同的行為(功能)。

包含內容:
(Java 7)變量,抽象方法
(Java 8)默認方法,靜態方法
(Java 9)私有方法

為什么要使用接口?

接口可以解決Java無法多繼承的缺陷

定義接口方法 : 關鍵字為interface

public interface USB {//變量//方法體 }

定義接口類(實現接口)方法

public class computer implements USB {//方法體 }

1. 抽象方法(abstract)

使用規則:接口的實現類必須覆蓋重寫(實現)接口中的抽象方法 去掉abstract關鍵字,加上方法體大括號
使用方法:接口類對象.方法名稱();

接口

public interface USB {public abstract void read(); //抽象方法——讀 }

接口類

public class computer implements USB {@Override //覆蓋重寫public void read() {System.out.println("這是一個抽象方法");} }

2.默認方法(default)

目的:實現接口升級,無需再在接口類中重寫
使用方法:接口類對象.方法名稱();

public interface USB {public default void method(){System.out.println("這是一個默認方法");} }

3.靜態方法(static)

目的同類對象共享的內容
使用方法:接口名稱.方法名稱();

public interface USB {public static void method(){System.out.println("這是一個靜態方法");} }

4.私有方法

私有方法 只有接口中的靜態/默認方法可以使用 private

多態

多態是java繼封裝性,繼承性之后的第三大特性,extends繼承和implements接口實現,是多態的前提
為什么要用多態? 我們現實中的事物常常會有許多形態,比如小明即是一個人也是一個學生,
代碼中體現多態,就是父類引用指向子類對象
向上轉型格式:

  • 父類類型 變量名 = new 子類類型
  • 接口名稱 變量名 = new 實現類名稱

向下轉型格式:

  • 子類類型 變量名 = (子類類型) 父類對象
  • 實現類名稱 對象名稱 = (實現類名稱) 接口名稱

向上轉型的意義:當接口中的方法已經能夠滿足需求時,這樣更加安全方便
向下轉型的意義:能夠訪問接口類中的獨有方法,這些方法接口中不存在

主方法中
訪問成員方法:new誰就優先使用誰 沒有向上找
訪問成員變量
1.直接通過對象名稱訪問:看等號左邊是誰 優先使用 沒有則向上找
2.間接通過成員方法訪問:看方法屬于誰 優先使用 沒有則向上找
總結一句話就是:
成員變量)編譯看左邊,運行看左邊
成員方法)編譯看左邊,運行看右邊
舉個例子
我建立了一個USB的接口,它的功能是(打開/關閉)設備.

public interface USB {public abstract void open(); //打開設備public abstract void close(); //關閉設備 }

它擁有兩個接口類(鼠標和鍵盤)來實現接口
這兩個接口類有覆蓋方法和自己獨有的方法
鼠標接口類

public class Mouse implements USB{@Overridepublic void open() {System.out.println("打開鼠標");}@Overridepublic void close() {System.out.println("關閉鼠標");}/*** Mouse獨有的方法*/public void click(){System.out.println("點擊鼠標");} }

鍵盤接口類

public class KeyBoard implements USB{@Overridepublic void open() {System.out.println("打開鍵盤");}@Overridepublic void close() {System.out.println("關閉鍵盤");}/*** KeyBoard獨有方法*/public void click1(){System.out.println("敲擊鍵盤");} }

有一個電腦設備去使用接口

public class Cmoputer {//筆記本自己的方法public void PowerOn(){System.out.println("筆記本開機");}public void PowerOff(){System.out.println("筆記本關機");}//使用設備方法public void useDevice(USB obj){obj.open(); //打開設備if(obj instanceof Mouse){Mouse useMouse = (Mouse)obj; //如果obj對象是Mouse類創建 就向下轉型useMouse.click(); //調用Mouse類中click獨有的方法}else if(obj instanceof KeyBoard){KeyBoard useKeyBoard =(KeyBoard)obj; //如果obj對象是KeyBoard類創建 就向下轉型useKeyBoard.click1();}obj.close(); //關閉設備} }

在主方法中我們可以測試

public class Demo01Test {public static void main(String[] args) {Cmoputer cmoputer = new Cmoputer();//創建一個computer對象USB mouse = new Mouse(); //向上轉型cmoputer.PowerOn(); //筆記本自己的方法cmoputer.useDevice(mouse); //接口實現的方法cmoputer.PowerOff(); //筆記本自己的方法} } 測試結果: 筆記本開機 打開鼠標 點擊鼠標 //通過向下轉型實現接口沒有 但是接口類中擁有的方法 關閉鼠標 筆記本關機

以上代碼的示例圖

總結

以上是生活随笔為你收集整理的Java接口,多态,向上转型,向下转型的意义的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。