接口的用途是用来定义现实世界不同类型事物的共同特征
如:
- 飞行特征
- 鸟和飞机
- 他们的共同特征可被定义在接口中
接口包含:属性,抽象方法
-
有时必须从几个类中派生出一个子类,继承他们所有的属性和方法。但是java不支持多重继承,有了接口可以得到多重继承的效果
-
一个类可以实现多个接口:
- 接口不能被实例化
- 具体类(子类)可以实现(implements)接口(父类),并实现接口中的抽象方法
- 具体类适用父接口的多态
- 接口也可以继承其他接口
package com.xatu.接口; public interface Flyer { public void takeoff(); public void fly(); public void land(); }
package com.xatu.接口; public class Bird implements Flyer{ private String type; public Bird(String type) { this.type = type; } @Override public void takeoff() { System.out.println("扑闪扑闪"); } @Override public void fly() { System.out.println("嘎嘎嘎"); } @Override public void land() { System.out.println("双脚着地"); } public String getType() { return type; } public void setType(String type) { this.type = type; } }
package com.xatu.接口; public class flyTest { public static void main(String[] args) { Bird bird = new Bird("家雀"); bird.takeoff(); Flyer f = new Bird("夜莺"); f.fly(); f.land(); } }
usb类
package com.xatu.接口; public interface USB { public void connect(); public void work(); public void disconnect(); } class Udisk implements USB{ private int size; public Udisk(int size) { this.size = size; } @Override public void connect() { System.out.println("jiance"); } @Override public void work() { System.out.println("xianshimulu"); } @Override public void disconnect() { System.out.println("bachu"); } public int getSize() { return size; } public void setSize(int size) { this.size = size; } } class Video implements USB{ private int pix; @Override public void connect() { System.out.println("jiancelianjie luxiang"); } @Override public void work() { System.out.println("luzhi"); } @Override public void disconnect() { System.out.println("bachu"); } public int getPix() { return pix; } public void setPix(int pix) { this.pix = pix; } public Video(int pix) { this.pix = pix; } } class Test{ public static void main(String[] args) { USB a = new Udisk(32); Udisk b = new Udisk(50); a.connect(); b.disconnect(); USB v = new Video(500); } }
实现接口中的类中必须提供接口中具体方法的实现内容,方可实例化,否则仍为抽象类
-
接口的主要用途就是被实现类实现(面向接口编程)
总结:通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系
通过接口可以指明多个类需要实现的方法,一般用于定义对象的扩张功能
接口主要用来定义规范,解耦。