java读书雷_Java多态学习笔记
java多態學習筆記
概述
多態的格式與使用
/*
代碼中體現多態性:父類引用指向子類對象。
*/
格式:
父類名稱 對象名 = new 子類名稱();
或者
接口名稱 對象名 = new 實現類名稱();
成員變量的使用特點
1.直接通過對象名訪問成員變量:看等號左邊是誰,優先用誰,沒有則向上找
2.間接通過成員方法訪問成員變量:看該方法屬于誰,優先用誰,沒有則向上找
ps:(永遠不會向下查找)
口訣:編譯看左邊,運行還看左邊。
成員方法的使用特點
/*
在多態的代碼中,成員方法的訪問規則是:
看new的是誰,就優先用誰,沒有則向上找。
口訣:編譯看左邊,運行看右邊。
使用多態的好處
對象的向上轉型
public class DemoTest {
public static void main(String[] args) {
Animal animal = new Cat();
animal.eat();
Cat cat = (Cat)animal;
cat.catchMouse();
}
}
對象的向下轉型
用instanceof關鍵字進行判斷
/*
如何才能知道一個父類引動的對象,本來是什么子類?
格式:
對象 instanceof 類名稱
這將會得到一個boolean值結果,也就是判斷前面的對象能不能當作后面類型的實例。
*/
public class DemoTest {
public static void main(String[] args) {
Animal animal = new Cat();
animal.eat();
giveMePet(animal);
}
public static void giveMePet(Animal animal){
if(animal instanceof Cat){
Cat cat = (Cat)animal;
cat.catchMouse();
}
if(animal instanceof Dog){
Dog dog = (Dog)animal;
dog.catchEnmy();
}
}
}
筆記本電腦
筆記本電腦(laptop) 通常具備使用USB設備的功能。在生產時,筆記本都預留了可以插入USB設備的USB接口,但具體是什么USB設備,筆記本廠商并不關心,只要符合USB規格的設備都可以。
定義USB接口,具備最基本的開啟功能和關閉功能。鼠標和鍵盤要想能在電腦上使用,那么鼠標和鍵盤也必須遵守。USB規范,實現USB接口,否則鼠標和鍵盤的生產出來也無法使用。
案例分析:
進行描述筆記本類,實現筆記本使用USB鼠標、USB鍵盤
USB接口, 包含開啟功能、關閉功能
筆記本類,包含運行功能、關機功能、使用USB設備功能
鼠標類,要實現USB接口,并具備點擊的方法
鍵盤類,要實現USB接口,具備敲擊的方法
定義usb接口:
public interface usb {
void open();//開啟功能
void close();//關閉功能
}
定義鼠標類:
public class Mouse implements usb{
@Override
public void open() {
System.out.println("鼠標開啟");
}
?
public void click(){
System.out.println("鼠標點擊");
}
@Override
public void close() {
System.out.println("關閉鼠標");
}
}
定義鍵盤類:
public class KeyBoard implements usb{
@Override
public void open() {
System.out.println("鍵盤已成功連接");
}
?
public void type(){
System.out.println("coding");
}
@Override
public void close() {
System.out.println("鍵盤斷開連接");
}
?
}
定義筆記本類(usb接口只能定義抽象方法,需要筆記本類來進行向下轉型判斷):
public class Laptop {
public void run() {
System.out.println("筆記本開始運行");
}
?
//筆記本使用usb設備,這時當筆記本調用這個功能時,必須給其傳遞一個符合usb規則得usb設備
public void useUSB(usb usb) {
//判斷是否有usb設備
if (usb != null) {
usb.open();
if (usb instanceof Mouse) {
Mouse m = (Mouse) usb;
m.click();
} else if (usb instanceof KeyBoard) {
KeyBoard k = (KeyBoard) usb;
k.type();
}
usb.close();
}
}
public void shutdown(){
System.out.println("電腦關機!");
}
}
?
測試類:
public class MainTest {
public static void main(String[] args) {
Laptop laptop = new Laptop();
laptop.run();
?
//創建鼠標對象,并使用鼠標
usb u = new Mouse();//使用多態寫法
laptop.useUSB(u);
?
//創建鍵盤對象,并使用鍵盤
KeyBoard keyBoard = new KeyBoard();//直接創建對象
laptop.useUSB(keyBoard);//類似于int->double
//laptop.useUSB(new KeyBoard());//使用匿名類
?
laptop.shutdown();
}
}
運行結果:
總結
以上是生活随笔為你收集整理的java读书雷_Java多态学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Apache Pulsar:实时数据处理
- 下一篇: 什么是四种七和弦 和三种转位