首先我们要来理解一下什么是接口:
*接口是一种规范,规定了行业标准,声明有什么功能,但是不实现声明的功能
*接口只是规定了要做什么,至于怎么做是由它的实现类去做的
接口中的一些注意事项:
*在接口中定义的所有变量都是常量,即接口中不能有变量
*int x = 10;编译器会自动在前面加上public static final
*接口中所有的方法都是抽象方法,不能有实现
*接口中所有的方法都是public abstract修饰的,即使程序员没有写,编译器也会自动加上.所以在声明的时候可以省略不写 *接口之间的继承使用的关键字和类之间继承使用的关键字是相同的,都是extends
* 一个接口可以同时继承多个接口,使用的关键字是extends
* 一个类只能继承一个父类,使用的关键字也是extends
* 一个类实现接口使用的关键字是implements,一个类可以实现多个接口,但不能同时继承多个父类
* 这是因为Java语言是单根继承
在多态的情况下,可以记住一个定律,方便排除
* 父类类型 父类对象 = new 子类类型();
* 以"="作为参考点
* 编译看左边,运行看右边
* 在上面的多态声明中,不能调用子类特有的方法
下面我们来举个例子:
定义三个接口,一个实现类,一个测试类
interface A:
package com.oracle.interfaces;
/**
*接口是一种规范,规定了行业标准,声明有什么功能,但是不实现声明的功能
*
*接口只是规定了要做什么,至于怎么做是由它的实现类去做的
*
* @author TF
*
*/
public interface A {
/**
* 在接口中定义的所有变量都是常量,即接口中不能有变量
* int x = 10;编译器会自动在前面加上public static final
*/
/*public static final*/ int x = 10;
/**
* 接口中所有的方法都是抽象方法,不能有实现
* 接口中所有的方法都是public abstract修饰的,即使程序员没有写,编译器也会自动加上.所以在声明的时候可以省略不写
*/
/*public abstract*/ void showA();
}
interface B:
package com.oracle.interfaces;
public interface B {
void showB();
}
interface C extends A,B:
package com.oracle.interfaces;
/**
* 接口之间的继承使用的关键字和类之间继承使用的关键字是相同的,都是extends
* 一个接口可以同时继承多个接口,使用的关键字是extends
* 一个类只能继承一个父类,使用的关键字也是extends
*
* 一个类实现接口使用的关键字是implements,一个类可以实现多个接口,但不能同时继承多个父类
* 这是因为Java语言是单根继承
* @author TF
*
*/
public interface C extends A,B{
void showC();
}
实现类 :class MyAB implements /*A,B*/C:
package com.oracle.interfaces;
/**
* 类实现接口需要使用关键字:implements
* 一个类可以同时实现多个接口,多个接口之间使用逗号分隔
*
* 一个类实现接口则必须实现接口中所有的方法,否则当前类也得是抽象类
* @author TF
*
*/
public class MyAB implements /*A,B*/C{
@Override
public void showA() {
System.out.println("showA()");
}
@Override
public void showB() {
System.out.println("showB()");
}
@Override
public void showC() {
System.out.println("showC()");
}
}
测试类:class TestInterfaceDemo:
package com.oracle.interfaces;
/**
* 在多态的情况下,可以记住一个定律,方便排除
* 父类类型 父类对象 = new 子类类型();
* 以"="作为参考点
*
* 编译看左边,运行看右边
* 在上面的多态声明中,不能调用子类特有的方法
*
* @author TF
*
*/
public class TestInterfaceDemo {
public static void main(String[] args) {
A a = new MyAB();
a.showA();
B b = new MyAB();
b.showB();
C c = new MyAB();
c.showA();
c.showB();
c.showC();
}
}
运行结果: