接口
我们知道,抽象类是对具体类 中共性的向上抽取。而接口内的方法全为抽象方法。
- 接口中成员:
常量,
抽象方法
interface Inter
{
public static final int NUM = 3;
public abstract void show();
}
接口除了满足抽象类的条件外,其修饰符和接口中方法还需满足:
修饰符
- 常量:public static fianl
- 方法 public abstract
接口中方法
不能有构造方法
不能有静态方法
不能有带方法体的方法
继承和接口的关系:
-
子父类之间的关系是继承,而在接口里,则叫做实现(implements)
-
子类对接口中的方法全实现后,才能建立对象(实例化),否则子类仍是抽象类
-
一个子类可以实现多个接口,即多实现,这是Java在没有多继承下的另一种表现形式
——原因是接口中的方法都没有方法体
——多个接口中存在方法名相同,参数列表相同,返回值相同的方法,子类同时实现这几个接口,实现该方法,编译运行通过。
示例:
interface Inter
{
public abstract void show();
}
interface InterA
{
public abstract void show();
}
class DemoC implements Inter,InterA
{
public void show()
{
System.out.println("\n");
}
}
——多个接口中存在方法名相同,参数列表相同,返回值不的方法,子类实现该方法,编译不通过,提示信息如
类型 InterA 和 Inter 不兼容;两者都定义了 show(),但却带有不相关的返回类型
示例:
interface Inter
{
public abstract void show();
}
interface InterA
{
public abstract int show();
}
——多个接口中存在方法名相同,参数列表不同 (重载),子类实现其中一个方法,编译运行都通过,运行结果根据子类的实现方法中的参数列表而定。
-
一个子类可以同时继承父类和实现接口
-
接口之间可以有多继承(extends)
示例:
interface Inter
{
public abstract void show();
}
interface InterA
{
public abstract void show();
}
interface InterC extends Inter,InterA
{
}
class DemoC implements InterC
{
public void show()
{
System.out.println("\n");
}
}