1. 程式人生 > >Java抽象類和介面(三)

Java抽象類和介面(三)

***********************體會介面的好處*******************************

一.可維護、可擴充套件


面向介面程式設計


介面:父型別


面向父類程式設計

 

二.解耦


高內聚、低耦合


耦合: 類和類之間的關係... 只要類和類之間有四種關係就是耦合(關聯、繼承、實現、依賴)


解耦: 緊密耦合------>鬆散耦合


public class Notebook {

private Screen14 screen = new Screen14();//只要new 緊耦合了


public void work(){
screen.display();//筆記本這個類和具體的Screen14這個類緊耦合
}
}


通過介面 解耦
----------------->

public class Notebook {

private IScreen screen;

public void setScreen(IScreen screen){
this.screen = screen;

}

}


三.通用性,方便統一的呼叫


舉例: 讓教室裡的所有電腦 同時開機


介面不統一的壞處(進一步體驗多型的優點)

if(是HP電腦){
hpPC.hpWork();
}else if(蘋果電腦){
applePC.appleWork();
}else if(戴爾電腦){
dellPC.dellWork();
}


演示程式碼:


package com.chapter9.演示介面的好處;

//演示介面的好處之 通用性,方便統一的呼叫
public class Test {

public static void main(String[] args) {

/*PC[] pcArr = new PC[3];


HPPC hpPC = new HPPC();
ApplePC applePC = new ApplePC();
DellPC dellPC = new DellPC();

pcArr[0] = hpPC;
pcArr[1] = applePC;
pcArr[2] = dellPC;

for(int i=0;i<pcArr.length;i++){

if(pcArr[i] instanceof HPPC){//pcArr[i] 是 HPPC

((HPPC)pcArr[i]).hpWork();
}else if(pcArr[i] instanceof ApplePC){// 如果是 ApplePC
((ApplePC)pcArr[i]).appleWork();
}else if(pcArr[i] instanceof DellPC){// 如果是 DellPC
((DellPC)pcArr[i]).dellWork();
}
}*/

//使用介面以後的程式碼

IPC[] pcArr = new IPC[3];

HPPC hpPC = new HPPC();
ApplePC applePC = new ApplePC();
DellPC dellPC = new DellPC();

pcArr[0] = hpPC;
pcArr[1] = applePC;
pcArr[2] = dellPC;

for(int i=0;i<pcArr.length;i++){
pcArr[i].work();
}

}
}


***********************如何判斷物件是不是某種型別************************


引用名a instanceof 類B


如果 引用a 是 類B的物件 返回的是 true,不是返回的是false