接口是抽象类的延伸,可以将它看作是存粹的抽象类,接口中的所有方法都没有方法体。接口的方法默认就是public abstract,变量默认就是public static final,可以将draw()方法封装到一个接口中,使需要draw()方法 的类实现这个接口,同时也继承图形类,这就是接口存在的必要性。
接口使用interface关键字进行定义:
public interface drawTes{
void draw()//接口内的方法,省略abstract关键字
}
一个类实现一个接口可以使用Implements关键字,在接口中定义的方法必须被定义为Public或abstract形式,其他修饰符不被Java编译器认可,即使不声明为public形式,他也是Public。
在接口中定义的任何字段都自动是static和final的。
interface drawTest{
public void draw();
}
class 平行四边形 extends 四边形 implements drawTest{
pubLi void draw(){ //由于该类实现了接口,所以需要覆盖draw()方法
System.out.println("平行四边形.draw()");
}
void doAnything(){
//dosomething
}
}
class 正方形 extends 四边形 implements drawTest{
pubLi void draw(){ //由于该类实现了接口,所以需要覆盖draw()方法
System.out.println("正方形.draw()");
}
void doAnyThing(){
//something
}
}
public class 四边形{ //something }
接口的统一标准
interface USB {
public void intall();// 加载驱动
public void work();// 工作
}
class Computer {
public void plugin(USB usb) {//接收统一的USB对象
usb.intall();
usb.work();
}
}
class Phone implements USB { //实现接口
@Override
public void intall() {
// TODO Auto-generated method stub
System.out.println("安装手机驱动.....");
}
@Override
public void work() {
// TODO Auto-generated method stub
System.out.println("手机成功连接电脑!");
}
}
class Print implements USB {
@Override
public void intall() {
// TODO Auto-generated method stub
System.out.println("打印机驱动正在导入....");
}
@Override
public void work() {
// TODO Auto-generated method stub
System.out.println("打印机已成功连接电脑!!!");
}
}
public class Test {
public static void main(String[] args) {
Computer computer = new Computer();
computer.plugin(new Phone());//向上转传入子类对象
computer.plugin(new Print());
}
}