抽象类
抽象类和普通类的主要有三点区别:
- 1)抽象方法必须为 public 或者 protected(因为如果为 private,则不能被子类继承,子类便无法实现该方法),默认情况下默认为 public。
- 2)抽象类不能用来创建对象;
- 3)如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为 abstract 类。
- 在其他方面,抽象类和普通的类并没有区别。
public abstract class TestDemo {
public String name;
public abstract void print();
public void method(){
}
}
public static void main(String[] args) {
TestDemo testDemo = new TestDemo() {
@Override
public void print() {
//实现具体内容
}
};
}
//传入的参数应该是抽象类的继承类
public void method(TestDemo testDemo) {
testDemo.print();
}
此处的实例化是Java的匿名类,其作用相当于创建一个匿名类继承了TestDemo抽象类。
testDemo是一个匿名类的实例对象,而不是TestDemo的实例对象。
接口
接口中可以含有 变量和方法
- 接口中的变量会被隐式地指定为 public static final 变量
- 方法会被隐式地指定为 public abstract 方法且只能是 public abstract 方法
与抽象类例子相似,接口也可以用匿名类实现,抽象类则是有匿名类继承。