abstract抽象:
抽象类:可以包含抽象方法的类
目的:当某个功能想让不同的子类有不同的实现方法的时候就使用抽象类。
特点:
- 不能是final修饰,因为抽象类需要被继承
- 子类继承必须重写抽象类中的所有抽象方法。如果子类不想重写或者只想重写部分,那么子类必须是抽象方法。
- 抽象类不能直接naw对象。如果需要new,需要在new对象的时候使用匿名类来重写抽象类中的抽象方法。
- 构造器不能为私有。子类实例化的时候会先调用父类的构造方法来实例化父类。
抽象方法:在抽象类或者接口中没有方法体的方法
特点:
- 不能有static、final、private修饰。因为抽象方法必须被子类重写,而static方法、final方法、private方法都不会被子类继承。
字段:和普通方法一样
interface接口
含义 :特殊的抽象类。是一种规范、标准、约束。
特点:
- 多继承。一个接口可以继承多个接口;一个类也可以实现多个接口。
- 没有构造器。不能直接new对象,需要用匿名内部类。
- 抽象字段默认为publlic static final;抽象方法默认为public abstract。
- 接口中不能有普通方法。可以有default和static方法。
- 可以有static方法。可以static方法中写具体实现。注意,使用了static,默认的public abstract修饰相当于没有。因为static和abstract是不可能共存的。
abstract VS interface
参数 | abstract | interface |
构造器 | 有 | 无 |
范围修饰符 | 除了private都可以 | 只能为public |
继承 | 单继承,和普通方法一样 | 多继承,可以继承多个接口;一个类也可以实现多个接口。 |
内置方法 | 什么方法都可以有。 | 只能有默认修饰public abstact方法和static方法。 |
| | |
| | |
记住:abstract关键字和static、final、private不可能在方法中一起出现。