- 接口:在杂戏团的猫和狗除了吃和睡猫狗还可以算数,而猫和狗本身不具备计算这种特殊能力,但是可以通过训练得到。这种特殊的能力定义在动物类中不合适,也不适合定义到猫狗类中,因为只有部分猫狗具备这种功能。所以为了体现这种扩展性,java提供了接口来定义这些额外的功能,并不给出具体的实现,将来那些猫狗需要被培训,只需要这部分猫狗把这种额外的功能实现即可。
接口的特点:
1、接口用关键字interface修饰
格式:interface 接口名{
//...
}
2、类实现接口用implements表示
格式:class 类名 implements 接口名{
//...
}
3、接口并不是实际意义上的一个类,它仅仅表示功能的扩展
4、接口不能实例化,但是可以使用多态的方式进行实例化
例:interface A{
public abstract void method();
}
class B implements A{
public abstract void method(){
System.out.println(“method”);
}
}
class Demo{
public static void main(String[] args){
A a = new B();//向上转型
a.method();//输出结果:method
}
}
5、
接口的子类
A、抽象类
B、具体类 - 需要实现(重写)接口中的所有方法
成员:
成员变量:只能是常量,并且是静态的。默认修饰符(如果没有系统会默认 补全):public static final
构造方法:接口没有构造方法 - 所以接口不能被实例化
成员方法:只能是抽象方法。默认修饰符:public abstract
普通类,抽象类和接口的区别:
1、成员区别:
普通类:
成员变量:可以是变量,也可以是常量
构造方法:无参构造器,带参构造器
成员方法:只能是非抽象的
抽象类:
成员变量:可以是变量,也可以是常量
构造方法:无参构造器,带参构造器
成员方法:可以是抽象的,也可以是非抽象的
接口:
成员变量:只能是常量,并且是静态的
构造方法:没有
成员方法:只能是抽象的,并且是public修饰(公共的)
2、关系区别:
1、类于类(包括抽象类):继承关系,只能单继承,可以多层继承
例:class A{
}
class B extends A{
}
class C extends B{
}
2、类与接口(包括抽象类):实现关系,可以单实现,也可以多实现(需
要实现所有接口中的方法),当然也可以在继承一个类的情况下实
现单个或多个接口
例:interface A{
public abstract void method1();
}
interface B{
public abstract void method2();
}
//实现了A,B两个接口,所以要实现A和B接口的所有方法
class C implements A,B{
public abstract void method1(){
}
public abstract void method2(){
}
}
3、接口与接口:继承关系,可以单继承,也可以多继承
例:interface A{
public abstract void method1();
}
interface B{
public abstract void method2();
}
//单继承
interface C extends A{
}
//多继承
interface D extends A,B{
}
3、设计理念的区别:
类(包括抽象类):被继承体现的是"is...a"的关系。类或者抽象类中
定义的是该继承体系的共性功能
接口:被实现体现的是"like...a"的关系。接口定义的是该继承体系
的扩展功能
```