接口
定义时需要用interface关键字
接口的权限一定是public
1.格式
public interface 接口名{
抽象方法1;
抽象方法2;
抽象方法3;
}
2.接口的实现
实现用implement关键字
public interface MyInterface {
public abstract void function( );
}
重写
public class MyInterfaceImp1 implements MyInterface{
public void function( ){
System.out .println("实现类,重写");
}
}
*测试*
public class Test{
public static void main(String[ ] args){
MyinterfaceImp1 my = new MyInterfaceImp1( );
my.function( );
}
}
3.接口中成员的特点
- 没有变量,都是常量 固定格式:public static final 数据类型 变量名=值
- public 权限
- static 可以被类名直接调用
- final 最终,固定住变量的值----常量
-
- 注意:public static final 修饰符 ,在接口中,可以省略不写
但是,, 不写不等于没有。
- 注意:public static final 修饰符 ,在接口中,可以省略不写
public interface MyInter{
public static final int x=3;
}
*测试*
public class Test{
public static void main(String[ ] args){
//常量被静态修饰,可以被类名直接调用,被接口的名字直接调用
System.out.println(MyInter.x);
}
}
4.实现类,实现接口,必须重写全部抽象方法,创建实现类对象
实现类,重写了一部分抽象方法,实现类,还是一个抽象类。
5.接口的多继承
多个接口之间可以用extends进行继承
interface Fu1{
void show( );
}
interface Fu2{
void show1( );
}
interface Fu3{
void show2( );
}
interface Z1 extends Fu1,Fu2,Fu3{
void show3( );
}
注意:
问:Java中有多继承吗?
答:类没有多继承,接口之间多继承。
6.接口和抽象的区别
相同点:
- 都位于继承的顶端,用于被其他类实现或继承
- 都包含抽象方法,其子类都必须覆写这些抽象方法
不同:
- 抽象类为部分方法提供实现,避免子类重复实现这些方法,提高代码重用性
-接口只能包含抽象方法 - 一个类只能继承一个直接父类(可能是抽象类),却可以实现多个接口;
- 抽象类是这个事物中应该具备的你内容, 继承体系是一种 is…a关系
-接口是这个事物中的额外内容,继承体系是一种 like…a关系
二者的选用:
- 优先选用接口,尽量少用抽象类
- 需要定义子类的行为,又要为子类提供共性功能时才选用抽象类