类,接口和抽象类之间的关系以及区别与联系
类与类 类与接口 以及 接口与接口 的关系
类与类
继承关系,只能单继承,但是可以多层继承
类与接口
实现关系,可以单实现,也可以多实现。还可以在继承一个类的同时实现多个接口
接口与接口
继承关系,可以单继承,也可以多继承
接口和抽象类
相同点:
- 都位于继承的顶端,用于被其他实现或继承。
- 都不能实例化。
- 都可以定义抽象方法,其子类都必须覆写这些抽象方法。
区别:
- 接口没有构造方法,抽象类有构造方法。
- 抽象类可包含普通方法和抽象方法,接口只能包含抽象方法;
- 一个类只能继承一个直接父类(可能是抽象类),却可以实现多个接口(接口弥补了Java的单继承)。
- 设计理念区别:抽象类被继承体现的是:”is a”的关系,共性功能;接口被实现体现的是:”like a”的关系,扩展功能
public interface InterfaceDemo{
public static final int num = 10;
public static void show() {
}
public abstract void print();
}
public interface InterfaceA {
public void printA();
}
public interface InterfaceB {
}
public class InterfaceDemoimpl implements InterfaceDemo,InterfaceA,InterfaceB{
int num = 20;
@Override
public void print() {
// TODO Auto-generated method stub
}
@Override
public void printA() {
// TODO Auto-generated method stub
}
}
public class Test {
public static void main(String[] args) {
///InterfaceDemo id = new InterfaceDemo();
InterfaceDemo id = new InterfaceDemoimpl();
//InterfaceDemo.num = 20;
int i = InterfaceDemo.num;
System.out.println(i);
}
}