转载:https://blog.youkuaiyun.com/liuchonghua/article/details/80013079
接口的概念
在Java中接口是一个全部由抽象方法组成的集合,接口需要用interface定义,里面只能有抽象的方法和常量。接口体现的是事物扩展的功能,在Java中,类定义了一个实体,包括实体的属性,实体的行为。而接口定义了一个实体可能发生的动作,只有一个声明,没有具体的行为。
当一个方法在很多类中有不同的体现时就可以将这个方法抽象出来做成一个接口。
接口里面只能有不可修改的全局常量,只能有抽象的方法,接口没有构造方法。
定义一个接口:
interface Inter {
public static final int i=10; //全局常量前缀public static final
public abstract void eat(); //抽象的方法
}
接口的特点
1、定义接口时使用interface定义,区别于抽象类,不需要加class。
2、接口不能被实例化,不能直接创建对象,因为接口里面只有抽象的方法,没有具体的功能。
3、接口可以继承接口,接口要实现具体的功能必须有实现他的子类,实现接口的子类中必须重写接口全部的抽象方法。
4、接口和接口之间可以多继承。
5、接口的子类可以是抽象类,但是没有实际的意义。
6、一个子类可以实现多个接口,通过implements关键字去实现。
7、接口需要通过多态才能创建对象。
如下:
interface A {
public static final int i = 10; //接口只能定义全局常量需要加public static final如果不加系统默认给出,推荐加。
public abstract void eat();
}
interface B extends A { // 接口可以继承接口
public abstract void sleep();
}
interface C {
public abstract void look();
}
abstract class D { //定义一个抽象类
public void run() {
System.out.println("跑起来");
}
public abstract void learn();
}
public class Text extends D implements B, C { //一个子类可以继承一个抽象类同时实现多个接口
//子类如果不是抽象类就必须实现所有的抽象方法
public void eat() { //实现接口A中的抽象方法
System.out.println("吃东西");
}
public void look() { //实现接口C中的抽象方法
System.out.println("看风景");
}
public void sleep() { //实现接口B中的抽象方法
System.out.println("睡懒觉");
}
@Override
public void learn() { //重写抽象类D中的抽象方法
System.out.println("学Java");
}
public static void main(String[] args) {
B b=new Text(); //多态,接口的引用指向子类的对象
b.eat();
b.sleep();
System.out.println(B.i); //静态常量通过接口名去访问,不推荐用对象去调用
C c=new Text();
c.look();
D d=new Text();
d.learn();
}
}
/**
* 输出为:
吃东西
睡懒觉
10
看风景
学Java
*/