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)
目的:實現接口升級,無需再在接口類中重寫
使用方法:接口類對象.方法名稱();
3.靜態方法(static)
目的:同類對象共享的內容
使用方法:接口名稱.方法名稱();
4.私有方法
私有方法 只有接口中的靜態/默認方法可以使用 private
多態
多態是java繼封裝性,繼承性之后的第三大特性,extends繼承和implements接口實現,是多態的前提
為什么要用多態? 我們現實中的事物常常會有許多形態,比如小明即是一個人也是一個學生,
代碼中體現多態,就是父類引用指向子類對象
向上轉型格式:
- 父類類型 變量名 = new 子類類型
- 接口名稱 變量名 = new 實現類名稱
向下轉型格式:
- 子類類型 變量名 = (子類類型) 父類對象
- 實現類名稱 對象名稱 = (實現類名稱) 接口名稱
向上轉型的意義:當接口中的方法已經能夠滿足需求時,這樣更加安全方便
向下轉型的意義:能夠訪問接口類中的獨有方法,這些方法接口中不存在
主方法中
訪問成員方法:new誰就優先使用誰 沒有向上找
訪問成員變量
1.直接通過對象名稱訪問:看等號左邊是誰 優先使用 沒有則向上找
2.間接通過成員方法訪問:看方法屬于誰 優先使用 沒有則向上找
總結一句話就是:
成員變量)編譯看左邊,運行看左邊
成員方法)編譯看左邊,運行看右邊
舉個例子
我建立了一個USB的接口,它的功能是(打開/關閉)設備.
它擁有兩個接口類(鼠標和鍵盤)來實現接口
這兩個接口類有覆蓋方法和自己獨有的方法
鼠標接口類
鍵盤接口類
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接口,多态,向上转型,向下转型的意义的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Solaris中文FAQ
- 下一篇: 2020第十一届蓝桥杯C/C++国赛B组