java的接口,
java的接口,
接口这个概念比起前面的更难理解,有点像C++的头文件和虚函数。
接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。
接口的规定
接口中可以定义常量,不能定义变量。接口中的属性都会自动用public static final修饰,接口中的常量必须在定义时制定初始值。
接口中的方法都是抽象方法,自动调用public abstract修饰,接口也可以通过extends继承多个接口,但是不能继承类。
接口的实现类必须实现接口的全部方法,否则要定义抽象类
接口类型可以用来声明一个变量,可以成为空指针或是被绑定在一个此接口实现的对象。
接口与类对比
相同点:
有多个方法。
保存在.java文件,编译后保存在.class。
字节码文件必须在与包名称相匹配的目录结构中。
不同:
接口不能实例化。
接口没有构造方法。
接口中所有方法都是公有的隐式抽象方法。
接口中只有静态常量,static,final。
接口不是被类继承,而是要被类实现。
接口支持多继承。
说了这么多,实际上接口就是一种约定,一种规范,就是类的一张功能表。
A继承了B,但却想使用C的一个方法,但又不能再继承,所以就使用了C的接口。下面附上接口多继承的代码,方便理解
接着上次多态的代码修改,为灯类和电话类分别加一些功能,方便后面效果。
灯
public void uselight(){
System.out.println("可以照亮");
}
电话
public void callphone(){
System.out.println("可以打电话");
}
下面分别为灯和电话编写接口
灯
public interface Lighti {
public boolean upele();
public void uselight();
}
电话
public interface Phonei {
public boolean upele();
public void callphone();
}
然后再在两个类定义的最后用implements分别实现两个接口,然后定义高级手机接口继承前面的两个接口
public interface Adphonei extends Phonei,Lighti{
}
然后实现这个接口,编译器就会告诉你哪些方法需要重写,除了静态的,其他的方法自动给列在下面。
public class Adphone implements Adphonei {
public Adphone(){
System.out.println("高级手机在此");
}
@Override
public boolean upele() {
System.out.println("高级手机不用充电");
return false;
}
@Override
public void callphone() {
System.out.println("高级呼叫");
}
@Override
public void uselight() {
System.out.println("高级照明");
}
}
相关文章
- 暂无相关文章
用户点评