1、情景
A类既有B类全部成员也有C类全部成员,与继承的单根性矛盾,故引入接口。
2、语法
public interface Myinterface(帕斯卡){
变量(默认:public static final)
方法 (public abstract)
}
3、特点
3.1接口没有构造方法,不可实例化,常做类型使用
与抽象类相似,不可new自己,new实现类
3.2实现类必须实现接口所有方法
继承父类=实现接口
3.3实现类可以实现多个接口(Java中的多继承)
关键字:implements(实现),多个接口用“,”隔开
3.4接口不能实现接口,可以继承多个其他接口
3.5实现类必须实现接口的所有方法,除非他是抽象类
4、理解
4.1接口是一种能力
接口是一种能力,体现在方法上,不关心具体对象。
接口是一种约定,标准。有的接口只有接口名。
package computer;
public class Computer {
//安装CPU EMS HardDisk
//属性
CPU cpu;//可以拿到测试类创建的实际对象的成员
EMS ems;
HardDisk harddisk;
//
public void show(){
cpu.brand();
cpu.mainFrequency();
ems.type();
ems.capacity();
harddisk.capacity1();
}
public CPU getCpu() {
return cpu;
}
public void setCpu(CPU cpu) {
this.cpu = cpu;
}
public EMS getEms() {
return ems;
}
public void setEms(EMS ems) {
this.ems = ems;
}
public HardDisk getHarddisk() {
return harddisk;
}
public void setHarddisk(HardDisk harddisk) {
this.harddisk = harddisk;
}
}
package computer;
public interface CPU {
public void brand();
void mainFrequency();
}
package computer;
public interface EMS {
void type();
void capacity();
}
package computer;
public interface HardDisk {
void capacity1();
}
package computer;
public class CPU1 implements CPU {
public void brand(){
System.out.println("英特尔");
}
@Override
public void mainFrequency() {
System.out.println("主频:2.2");
package computer;
public class EMS1 implements EMS {
@Override
public void type() {
System.out.println("内存类型:A");
}
@Override
public void capacity(){
System.out.println("内存容量:16G");
}
}
package computer;
public class HardDisk1 implements HardDisk {
@Override
public void capacity1() {
System.out.println("硬盘容量:1T");
}
}
package computer;
public class Test {
public static void main(String[] args) {
Computer computer=new Computer();
CPU cpu=new CPU1();//接口作为自定义CPU类型接收其实现类,实质是实现类CPU1,cpu是类型对象
EMS ems=new EMS1();
HardDisk harddisk=new HardDisk1();
computer.setCpu(cpu);//传入CPU类型的对象cpu,为参数
computer.setEms(ems);
computer.setHarddisk(harddisk);
computer.show();
}
}