接口
1.8以前,关于接口的一些特性:
1.接口不能被实例化对象。
2.接口没有构造方法。
3.接口的方法只能定义为public abstract,定义为其他的会报错。
4.接口可以多重继承。
5.接口中不能包含成员变量,除了static final类型的。
6.接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。
7.接口中不能有静态代码块和静态方法。
1.8之后接口引入了默认方法和静态方法,为了避免一个接口下的实现类过多,当修改接口内方法时其下实现类全部要改动,很麻烦,而增加默认方法和静态方法,则对其他实现类不影响
示例:
interface:
public interface Java8Test01 {
/**
* 1.8之前,方法只能为抽象方法,且在实现类中必须重写
*/
public abstract void test01();//1.7
/**
* 1.8之后,可写默认方法和静态方法,无需在实现类中重写,二者区别与之前相同,即静态方法可通过 接口.方法调用
*/
public default void test02() {//实例化实现类调用
System.out.println("默认方法");
}
public static void test03() {//接口.方法名调用
System.out.println("静态方法");
}
}
implement class:
public class InterfaceTest implements Java8Test01{
@Override
public void test01() {
// TODO Auto-generated method stub
}
public static void main(String[] args) {
Java8Test01.test03();//静态方法调用
InterfaceTest ift = new InterfaceTest();
ift.test02();//默认方法调用
}
}
匿名内部类