Java抽象类和接口
Posted 菜菜小谭
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
以上是关于Java抽象类和接口的主要内容,如果未能解决你的问题,请参考以下文章