1.接口概述
接口: 特殊的抽象类,使用方式及组成部分都与抽象类类似
语法: interface implements
注意: 在接口中只能定义公开的静态常量及公开的抽象方法
接口与抽象类的异同:
相同点:
可以编译成字节码文件
都不能具体化
都可以作为引用对象(多态)
都可以使用Object(祖宗类)的方法(继承)
不同点:
接口属性都是公开的静态常量
接口方法都是公开的抽象方法
接口没有构造方法,动态代码块,静态代码块问题:在接口中能否有非抽象方法? 在jdk1.8中提供了default修饰的非抽象方法,一般很少使用
//定义一个接口,名字为MyInterface
interface MyInterface{
//public static final: 公开的静态常量
int SEX_MAN=1; //查看反编译工具
//public abstract: 公开的抽象方法
void test();
public default void show() {
}
}
//MyImpl实现类实现了MyInterface接口,提供两种处理方式:
//1.重写接口的抽象方法 2.把自身变为抽象类
/*abstract*/ class MyImpl implements MyInterface{
@Override
public void test() {
System.out.println("重写接口的抽象方法");
}
}
public class Test1 {
public static void main(String[] args) {
//MyInterface interface1 = new MyInterface(); //不能具体化
MyInterface interface1 = new MyImpl();
interface1.getClass(); //根据继承性, 可以调用Object的方法
}
}
2.接口:代表一种能力
2.1接口直接引用实现多态
=========================接口直接引用实现多态=========================
//什么是接口:
//从微观上讲,接口代表着一种能力或约定
//案例:喷火娃具备喷火能力,飞天娃具备飞