1.接口的定义与使用
1.1接口的定义
定义接口使用关键字interface,接口就是抽象方法与全局常量的集合(纯粹版的抽象类)
interface IMyIterface{
//全局常量
public static final String MSG="test";
//抽象方法
public abstract void test(){
}
为什么说接口是纯粹版的抽象类?抽象类可以包含普通方法而接口只能包含抽象方法。
1.2接口命名:
接口使用大写I开头;子类要想使用接口,用implements实现接口,一个子类可以同时实现多个接口(避免了单继承局限)
interface IMessage{
public static final String MSG = "I am a biter" ; // 全局常量
public abstract void print() ; // 抽象方法
}
interface INews {
public abstract String getNews() ;
}
class MessageImpl implements IMessage,INews {
子类的命名规范 :接口名为IMyInterface 则子类名为MyInterfaceImpl
1.3接口的使用规则
(1)接口中只允许public权限(不管是常量还是方法,都是public 权限,即使不写权限修饰符也是public)
接口中的数据成员默认为 public static final
接口中的方法默认为 public abstract
由于接口中只包含抽象方法和全局常量,所以全局常量可以不加 public static final,抽象方法也不加public abstract
(2)接口内不能有已经实现的方法。
(3)接口不能进行实例化,new
(4)接口可以可以使用extends继承多个接口(接口多继承)。此时的接口拥有了继承接口里面的抽象方法。
interface IA{
void function1();
}
interface IB{
void function2();
}
public interface IMessage extends IA,IB{
//同时继承了IA,IB接口里面的抽象方法
}
(5)如果一个抽象类继承了接口,那么抽象类当中可以不实现接口的方法。但是如果在有一个普通类继承了此抽象类,那么此不同类一定要实现接口和抽象类里面的方法。
interface IA{
void function1();//抽象方法
}
abstract class B implements IA{
//可以不用覆写IA接口里的抽象方法
public abstract void fun2();
}
class C extends B{
@Override
public void function1() {
//必须覆写IA接口里的抽象方法