1. 接口是一种规范和标准,是一些方法特征的集合,但没有方法实现。
2.抽象类利于代码复用,接口利于代码的扩展和维护。
3.接口中只有全局静态常量和全局静态抽象方法。常量必须有初始值。
4.接口之间可以通过extends实现继承关系,一个接口可继承多个接口。
面向接口编程
组装电脑面向接口编程。
CPU接口
public interface Cpu {
/*
* 获取CPU品牌
*/
public String getCpuCount();
/*
* 获取CPU主频
*/
public Double getFrequery();
}
内存接口
public interface EMS {
/*
* 内存类型
*/
public String getEmsType();
/*
* 获取内存容量大小
*/
public int getSize();
}
硬盘接口
public interface HardDisk {
/*
* 获取硬盘大小
*/
public int getCapacity();
}
因特尔CPU实现类
public class IntelCPU implements Cpu{
@Override
public String getCpuCount() {
// TODO Auto-generated method stub
return "Intel";
}
@Override
public Double getFrequery() {
// TODO Auto-generated method stub
return 3.5;
}
}
英伟达CPU实现类
public class NVIDIACPU implements Cpu {
@Override
public String getCpuCount() {
// TODO Auto-generated method stub
return "英伟达CPU";
}
@Override
public Double getFrequery() {
// TODO Auto-generated method stub
return 6.7;
}
}
金士顿内存实现类
public class JSangDunEMS implements EMS {
@Override
public String getEmsType() {
// TODO Auto-generated method stub
return "DDR4";
}
@Override
public int getSize() {
// TODO Auto-generated method stub
return 16;
}
}
三星内存条实现类
public class SanSumgEMS implements EMS {
@Override
public String getEmsType() {
// TODO Auto-generated method stub
return "DDR3";
}
@Override
public int getSize() {
// TODO Auto-generated method stub
return 8;
}
}
三星硬盘实现类
public class SaanSumgHardDisk implements HardDisk {
@Override
public int getCapacity() {
// TODO Auto-generated method stub
return 600;
}
}
希捷硬盘实现类
public class XJieHardDisk implements HardDisk{
@Override
public int getCapacity() {
// TODO Auto-generated method stub
return 800;
}
}
电脑信息描述类
public class Install {
Cpu cpu;
EMS ems;
HardDisk hard;
public Install(Cpu cpu, EMS ems, HardDisk hard) {
this.cpu = cpu;
this.ems = ems;
this.hard = hard;
}
public void setCpu(Cpu cpu) {
this.cpu = cpu;
}
public void setEms(EMS ems) {
this.ems = ems;
}
public void setHard(HardDisk hard) {
this.hard = hard;
}
/*
* 组装方法
*/
public void packaing(){
System.out.println("该计算机的CPU是"+cpu.getCpuCount()
+"的,它的主频是"+cpu.getFrequery()
+"\n它的内存类型为:"+ems.getEmsType()
+",它的内存容量大小为"+ems.getSize()
+"KB"+"\n它的硬盘容量为"+hard.getCapacity());
}
}
电脑组装类
public class ComputerInstallTest {
public static void main(String[] args) {
Cpu cpu=null;
EMS ems=null;
HardDisk hard=null;
Install ins=new Install(cpu, ems, hard);
/*
* 使用intelcpu,三星内存,三星硬盘组装
*/
cpu=new IntelCPU();
ins.setCpu(cpu);
ems=new SanSumgEMS();
ins.setEms(ems);
hard=new SaanSumgHardDisk();
ins.setHard(hard);
ins.packaing();
/*
* 使用英伟达cpu,金士顿内存,希捷硬盘组装
*/
cpu=new NVIDIACPU();
ins.setCpu(cpu);
ems=new JSangDunEMS();
ins.setEms(ems);
hard=new XJieHardDisk();
ins.setHard(hard);
ins.packaing();
}
}