抽象类与接口
abstract关键字
abstract关键字只能用来修饰类和方法。
抽象方法
抽象方法不能用private/static/synchronized/native等访问修饰符修饰。
抽象方法必须不带花括号,以分号结尾。
抽象类
只要包含一个抽象方法的类就是抽象类,且必须被声明为抽象类。
实现抽象方法时,必须使用相同的或更低的访问级别。(public/protected/private)。
抽象类不能被实例化。
抽象类可以被继承(extends)。一个类只能继承一个抽象类。
抽象类的子类只有实现了父类中全部的抽象方法才可以被实例化。
抽象类的子类可以选择实现父类的部分抽象方法,这样,该子类也为抽象类。
抽象类可以包含部分非抽象方法。
抽象类中的成员变量可以随意修饰,默认为default(本包可见)修饰,当然也可以被定义为public/protected/private。这些成员变量可以在子类中被重新定义和重新赋值。
抽象类可以实现接口。可以继承具体类。可以有静态main方法。
接口
接口中必须所有方法都是抽象方法。
接口中的成员变量默认由public static final修饰。且只能由其修饰,必须给该成员变量赋初始值。
接口可以被实现(implements)。一个类可以实现多个接口,从而间接地达到多重继承。
接口可以继承接口。