思维导图


一、什么是接口
接口代表一种能力或约束
Java为单继承,当父类的方法种类无法满足子类需求时,可实现接口扩充子类能力。interface MyInterface {
void method();}123接口没有构造方法
只能定义公开静态常量、公开抽象方法
使用 interface 关键字定义接口接口的好处程序耦合度降低
更自然的使用多态
设计与实现完全分离
更容易搭建程序框架
更容易更换具体实现

二、接口与类

2.1 类实现单个接口
定义一个接口/**
* 接口。
* @author 张宝旭
*/public interface MyInterface {
// 定义公开静态常量
public static final String NAME = "zbx";
Integer AGE = 21; // 前面的 public static final 可以省略,默认存在
// 定义公开静态方法
public abstract void show();
void run(); // 前面的 public abstract 可以省略,默认存在}12345678910111213
实现接口
使用 implements 实现接口,必须重写接口中的所有方法/**
* 接口实现类。
*
* @author 张宝旭
*/public class MyInterfaceImpl implements MyInterface{
@Override
public void show() {
System.out.println("show");
}
@Override
public void run() {
System.out.println("run");
}}12345678910111213141516
测试
使用接口去创建一个实例:同父类一样,接口也可声明为引用,并指向实现类对象。仅可调用接口中所声明的方法,不可调用实现类中独有的方法
可强转回实现类本身类型,进行独有方法调用/**
* 接口测试。
*
* @author 张宝旭
*/public class MyInterfaceTest {
public static void main(String[] args) {
MyInterface myInterface = new MyInterfaceImpl();
myInterface.show();
myInterface.run();
}}123456789101112

2.2 类实现多个接口
实现多继承接口:中间用逗号隔开/**
* 接口实现类。
*
* @author 张宝旭
*/public class MyInterfaceImpl implements MyInterface, Flyable{
@Override
public void show() {
System.out.println("show");
}
@Override
public void run() {
System.out.println("run");
}
@Override
public void fly() {
System.out.println("fly");
}}123456789101112131415161718192021

2.3 接口继承接口/**
* 接口。
* @author 张宝旭
*/public interface MyInterface extends Flyable, Swimable{}123456

2.4 接口的多态
使用不同引用创建的对象,访问权限也不同/**
* 接口测试。
*
* @author 张宝旭
*/public class MyInterfaceTest {
public static void main(String[] args) {
MyInterface myInterface = new MyInterfaceImpl();
myInterface.run(); // 只能调用run()方法
Flyable flyable = new MyInterfaceImpl();
flyable.fly(); // 只能调用fly()方法
Swimable swimable = new MyInterfaceImpl();
swimable.swim(); // 只能调用swim()方法
MyInterfaceImpl myInterface1 = new MyInterfaceImpl();
myInterface1.run(); // 可以调用全部方法,包括自己特有的方法
myInterface1.fly();
myInterface1.swim();
myInterface1.eat();
}}1234567891011121314151617181920212223

2.5 常量接口
将多个常用于表示状态或固定值的变量,以静态常量的形式定义在接口中统 一管理,提高代码可读性public interface ConstInterface {
String NAME = "zbx";
Integer AGE = 21;}1234

2.6 标记接口
不实现任何内容,仅作为标记public interface LabelInterface {}12

三、接口与抽象类的区别
相同可编译成字节码文件
不能创建对象
可以作为引用类型
具备Object类中所定义的方法
不同接口中的变量只能定义成 public static final 类型的,抽象类中的变量与普通类相同
接口中的方法都为抽象方法,抽象类中可以有非抽象方法
接口中没有构造方法、动态代码块、静态代码块
接口中JDK1.8之后可以定义static方法和default方法详细讲解:实例分析Java接口和抽象类的区别,以及如何去使用它们(JDK1.8 新版本)

四、接口的规范ᕙ༼ຈلﻝ͜ ຈ༽ᕗI’m the power
当定义的接口表示一种能力时,应定义成以 able 结尾的名字/**
* @author 张宝旭
*/public interface Flyable {
void fly();}123456
任何类在实现接口时,必须实现接口中所有的抽象方法
实现接口中的抽象方法,访问修饰符必须是 public
本文介绍了Java接口的概念、好处及如何使用。通过示例展示了如何定义接口、类实现接口、接口继承、接口的多态性以及接口与抽象类的区别。同时提到了常量接口和标记接口的使用场景。
3472

被折叠的 条评论
为什么被折叠?



