java中的接口
1.接口的定义
狭义的定义:
关键词: interface 接口名{
}
广义的定义:规则 接口就相当于定义了一个规则 要想使用这个接口 就必须遵循这个规则
2.使用接口应该注意:
1.接口中只能声明抽象方法(jdk1.8以前的规则)
2.如果你声明一个方法 没写 abstract 系统会默认帮你加上
3.接口没有构造方法 不能直接实例化对象 使用接口的关键字 implements(实现接口)
4.接口中定义的成员变量 默认的修饰词 是public static final 是常量 并且直接使用接口名去调用
(一般来说 接口的实现类 都有后缀 Impl)
2.声明一个接口
interface InterA{
public static final int num = 10;
public abstract void fun();
}
class InterAImpl implements InterA{
@Override
public void fun(){
System.out.println("我是实现类的 fun方法);
}
}
3.
类和接口的关系:
类和接口是实现的关系 可以单实现 可以多实现
接口和接口的关系:
接口和接口是继承关系 可以是单继承 也可以是多继承
类和类的关系:
类和类是继承关系 只能是单继承 可以多层继承
interface InterB{
public abstract void fun1();
}
interface InterC{
public abstract void fun2(){
}
interface InterD extends InterB, InterC{
}
class InterImpl implements InterD{
@Override
public void fun1(){
}
@Override
public void fun2(){
}
4.JDK1.8后接口的新特性
接口中可以声明:
1.抽象方法
2.静态方法
3.默认方法
抽象类和接口的区别
1.成员变量
抽象类:可以是常量 也可以是变量
接口:只能是常量
2.成员方法
抽象类:可以有抽象方法,也可以有普通的成员方法
接口:只能是抽象方法 静态方法 和 默认方法
3.构造方法
抽象类:有构造方法 抽象类可以被继承
接口:没有构造方法 只能被实现
interface InterX{
public abstract void print();
public static void staticFun(){
System.out.println("接口中的静态方法");
}
public default void defaultfun(){
System.out.println("接口中的默认方法");
}
}
class InterXImpl implements InterX{
@Override
public void print(){
System.out.println("实现类中的抽象方法")
}
@Override
public void defaultfun(){
System.out.println("实现类中的默认方法")
}
}