abstract and interface
共同点:
一、方法都是public(抽象类中的抽象方法)
二、都不可以被实例化,需要用子类继承抽象类或实现接口,重写抽象方法。
不同点:
一、抽象类中可以定义变量,接口中定义变量默认为全局常量(public static final)所以必须赋初值
public interface Human{
int a = 0; // 等价为: final int a = 0;
}
二、抽象类中可以有非抽象方法,而接口中方法必须都是抽象的(当然可以不写public abstract关键字)。
三、一个类实现抽象类只需要实现部分方法(实现类为抽象类因为还存在抽象方法没实现),实现接口需要实现所有方法
四、一个类可以实现多个接口(implements),但只能实现一个抽象类(extends)
需要注意的:
有抽象方法的类必须声明为抽象类
抽象类与抽象方法的定义
abstract class 类名{
public abstract 返回值 方法名(形参列表)//当然 public可以省略不写
}
接口定义
public interface 接口名{
//方法可以省略 public 与 abstract
//可以有常量,不能有变量,当然可以省略 public static final 关键字
}