类目 | 方法 | 成员变量 | 构造方法 |
---|---|---|---|
抽象类 | 无限制 | 无限制 | 子类通过调用构造方法链调用构造方法,抽象类不能用new操作符实例化 |
接口 | public abstract | public abstract | 无构造方法,不能用new实例化。 |
抽象类:
1,抽象类不能用new来创造他的实例(在子类的构造方法中实例化),但是可以作为一种数据类型。下边是正确的(假设A是抽象类):
A[] a=new a[10];
2,抽象类中可以没有抽象方法,但是有抽象方法该类一定是抽象类。
3,子类可以覆盖父类的抽象方法,并将它定义为abstract(但是很少用,一般在都实现了这种方法,但是他在当父亲的方法实现在子类变的无效时是很有用的,此时必须用他)。
4,即使子类的父亲是具体的,子类也可以是抽象的(如A与Object);
5,抽象类中的方法是非静态的,构造方法定义为抽象protected(因为他只能被子类使用);
compare 变量 构造方法 方法
抽象类 无限制 子类通过调用构造方法链调用构造方法,抽象类不能用new操作符实例化 无限制
接口 所有的变量为public static final 无构造方法,不能用new实例化。 public abstract
一个类可以继承多个接口(implements),但是只能继承一个类,接口可以继承接口,但是接口不能继承类;
接口:
1,接口是对功能的拓展,它的目的是指明相关或者不相关类的多个对象的共同行为。
2,接口中只有常量和抽象方法。// 接口中只有的方法全是abstract。
3,接口可以继承接口(用extends)。