首先了解什么是抽象类/函数
1.抽象函数:表达概念而无法实现具体代码的函数
抽象类:表达概念而无法构造出实体的类
2.抽象函数只有函数头而没有函数体,子类实现这些函数
• 有抽象函数的类一定是抽象类,没有抽象函数的类也可以是抽象类。
• 非抽象类不能包含抽象函数
• 如果一个抽象父类的子类不能实现所有的抽象函数,它必须声明为抽象的。
3.抽象类不能用new制造对象,但是可以定义变量;任何继承了抽象类的非抽象类的对象可以赋值给该变量
4.抽象类可以定义构造方法,可在子类的构造方法中调用。
再了解什么是接口
1.接口是纯抽象类,是一个抽象类型,是抽象函数的集合
2.所有成员函数都是抽象函数
3.所有成员变量都是public static final
4.接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。
5.类描述对象的属性和函数
6.接口则包含类要实现的函数
interface表明其后紧跟着的是接口名; extends表明继承自那些父接口;
接口的实现
/* 文件名 : Animal.java */
interface Animal {
public void eat();
public void travel();
}
/* 文件名 : MammalInt.java */
public class Cat implements Animal{
public void eat(){
System.out.println(“Cat eats");
}
public void travel(){
System.out.println(“Cat travels");
}
public int numOfLegs(){ return 4; }
public static void main(String args[]){
Cat m = new Cat();
m.eat();
m.travel();
} }
注意:
- 接口无法被实例化,不能new一个接口的对象出来,但是可以被 实现后,new一个实现接口的类对象出来
- 接口类型可用来声明一个变量 。可以是null ;或是去管理一个实现接口的类对象。
- 类可以实现多个接口 • 接口不能实现接口
接口的继承
1.接口能继承另一个接口
2.接口的继承使用extends关键字,子接口继承父接口的函数
3.接口可以继承接口,但不能继承类
4.接口允许多继承
5.如果在子接口中定义了和父接口同名的常量,则父接口中的常量被隐藏
6.如果在子接口中定义了和父接口同名的
函数,则父接口中的方法被重写
抽象类与接口比较
1.抽象类和接口都可以用于表达共同特征
2.strong is-a relationship→继承关系→类的继承
3.weak is-a relationship→类属关系,指对象拥有某种属性→接口的实现
例如:
• 学生和人的关系应该用类继承;
• 鼠标、键盘和usb通信接口的关系应该用接口实现
• 可以使用接口避开单重继承的限制