接口的使用
* 1、接口使用interface来定义
* 2、Java中,类和接口是并列结构。
* 3、如何定义接口,定义接口中的成员。
*
* 3.1Jdk7及以前。只能定义全局常量和抽象方法。
* >全局常量:public static final的,但是书写时可以省略。
* >抽象方法:public Abstract 的形式。
* 3.2JDK8:除了定义全局常量和抽象方法之外,还可以定义静态方法、默认方法(略)
* 4、接口中不能定义构造器的!意味着接口是不可以实例化。
*
* 5、Java开发中,接口通过让类实现(implements)的方式来实现。
* 如果实现类中覆盖了接口中的所有抽象方法,则实现类就可以实例化。
* 如果实现类中没有覆盖了接口中的所有抽象方法,则此实现类就仍然是一个抽象类。
* 6、Java类可以实现多个接口 --->弥补了Java的多继承性。
* 格式:class AA extends BB implements CC,DD,EE{
* }
*
* 7、接口与接口之间可以继承而且可以多继承。
*
* ****************************************
* 8、接口的具体使用,体现多态性
* 8、接口实际上可以看作一种规范
*
* 面试题:抽象类和接口有哪些异同?
public class InterfaceTest {
public static void main(String[] args) {
System.out.println(Flyable.MAX_SPEED);
System.out.println(Flyable.MIN_SPEED);
Plane p1 = new Plane();
p1.fly();
}
}
interface Flyable{
//全局常量
public static final int MAX_SPEED = 7900;
public static final int MIN_SPEED = 1;
//抽象方法
public abstract void fly();
// public abstract void stop();
//省略了public abstract
void stop();
}
interface Attackable{
void attack();
}
class Plane implements Flyable{
@Override
public void fly() {
System.out.println("通过引擎起飞");
}
@Override
public void stop() {
System.out.println("驾驶员减速");
}
}
abstract class Kite implements Flyable{
@Override
public void fly() {
// TODO Auto-generated method stub
}
}
class Bullet extends Object implements Flyable,Attackable,CC{
@Override
public void attack() {
// TODO Auto-generated method stub
}
@Override
public void fly() {
// TODO Auto-generated method stub
}
@Override
public void stop() {
// TODO Auto-generated method stub
}
@Override
public void method2() {
// TODO Auto-generated method stub
}
@Override
public void method1() {
// TODO Auto-generated method stub
}
@Override
public void method3() {
// TODO Auto-generated method stub
}
}
//******************************
interface AA{
void method1();
}
interface BB{
void method2();
}
interface CC extends BB,AA{
void method3();
}