Java接口
一、功能与抽象类相似,作为模板使用来衍生子类。
不同: (1) 接口的成员变量必须初始化,并设置为final类型,也就是成员变量必须为常量,不能被修改
(2)成员函数必须全为抽象函数
定义:
interface 接口名称
{
final 数据类型 成员名称 = 常数;
修饰符 abstract 返回类型 成员函数名(参数);
}
//其中 final与abstract可以省略
实现:
class 类名 implements 接口名
{
}
二、类似抽象类
利用父类的数组变量来访问子类对象的成员
(1)先创建父类的数组变量;
(2)创建子类对象并放入数组,利用数组元素来访问子类的内容。
只适合各个子类实现同一个父类中的方法
例:
BasketBall实现了两个接口,若用Ball来声明对象,则只能使用Ball接口中定义的方法或变量,而不能使用Shape里的 变量
package com;
public class JavaTest {
public static void main(String ar[])
{
Ball basketball = new BasketBall();
basketball.show();
//System.out.println(basketball.PI);
}
}
interface Ball{
public abstract void show();
}
interface Shape{
final double PI = 3.14;
}
class BasketBall implements Ball,Shape{
//override可以检查覆盖的方法是否存在
@Override
public void show() {
// TODO Auto-generated method stub
System.out.println("BasketBall");
}
}
结果:
BasketBall
三、实现多重继承
子类只能继承自一个父类,但可以实现多个接口,可以通过接口实现类的多继承。
如上例,实现了连个接口。
四、接口的衍生
接口可以通过extends关键字来衍生接口,与类的衍生不同的是,接口可以衍生自多个接口