这里接口指抽象类还有interface接口
java抽象类
定义:使用了关键词abstract声明的类叫作“抽象类”。如果一个类里包含了一个或多个抽象方法,类就必须指定成abstract(抽象)。“抽象方法”,属于一种不完整的方法,只含有一个声明,没有方法主体。
特性
抽象类为子类提供了通用的接口,但是本身不能实例化。子类需要实现抽象方法变成非抽象类,才能实例化。
interface接口
定义
在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法
特性
(1)interface接口中定义的方法默认是(也只能是)public的。
(2)interface接口中定义的字段是默认是(也只能是)public,static,final的。字段不能为
(3)interface接口不能是空final,但是可以被非常量表达式初始化。
举例:
public interface Animal {
//The blank final field name may not have been initialized
//String name;
//public static final 的,SEX不会再发生改变了
String SEX = null;
//使用非常量表达式初始化。
int AGE = new Random().nextInt(50);
}
特殊情况
实现的多个接口中,方法签名完全一样
程序正常运行
public class Test implements IA, IB{
public static void main(String[] args) {
new Test().f();
}
@Override
public void f() {
System.out.println("f()");
}
}
interface IA{
void f();
}
interface IB{
void f();
}
运行结果是
f()
所以程序正常运行。
实现的多个接口中,方法名和参数列表相同,返回值不同
这类情况不能通过编译
public class Test implements IA, IB, IC{
public static void main(String[] args) {
new Test().f();
}
@Override
public void f() {
System.out.println("f()");
}
}
interface IA{
void f();
}
interface IB{
void f();
}
interface IC{
int f();
}