你真的了解抽象类和接口吗?
抽象类:和更高级别的类具有相同的方法声明,但是方法主体不同。 这个时候,我们正在考虑提取方法宣言。 让子类继承后,自己实现方法体。 没有方法论的方法。 必须使用抽象的标志下。
特征: 1.抽象类和抽象方法全部用abstract修饰
2 .抽象类不能实例化
3 .抽象类不一定有抽象方法。 但是,有抽象方法的类一定是抽象类
4 .抽象类必须通过子类实现,每个子类实现的逻辑不同,然后实例化子类
通过升级实现多态性
抽象方法:只有方法声明没有方法主体,必须放入抽象类中
抽象类常见问题
1 .抽象类有构建方法吗? 可以实例化吗? 如果不行,为什么会有构造方法?
抽象类有构造方法。
抽象类不能实例化。
抽象类中的构造方法是通过实例化子类调用的。
2 .抽象关键字abstract不能与哪个关键字共存?
私有:
由于私有内容子类不被继承,所以无法改写。
但是,abstract修饰的方法要求被改写。 两者冲突。
最终
final修饰的方法无法改写。
abstract修饰的方法被要求被改写。 两者冲突。
静态
如果抽象方法可以用静态修饰,则可以直接从类名调用该方法。 抽象方法没有方法主体,这样的调用没有意义。 所以,不能用静态修饰。
抽象类可以没有抽象方法吗? 如果可以的话,这样的课有什么用吗?
抽象类可以没有抽象方法。
抽象类没有抽象方法的作用。 只需防止另一个类创建该抽象类对象。 这出现在awt上。
接口:在抽象出一个类的方法时,java提供另一个称为接口的表示形式。
在接口中定义,implement实现接口
2、类可以实现多个接口,但不能多重继承;
3 .接口也可以多继承接口
4 .接口弥补了类和类之间单一继承的缺点
5 .接口的出现会降低耦合性。
耦合(类和类的关系)
凝聚(班级履行职能的能力)
编程规范:低偶联、高凝聚
在区别:抽象类中定义的是继承体系中的共性功能。
接口中定义的是继承体系中的扩展功能
抽象类的数据特性:
成员变量:变量或常量
成员方法:可以是抽象方法,也可以是非抽象方法
构建方法:有构建方法
接口的数据特性:
成员变量:常数。 默认修饰公共静态最终版
成员方法:都是抽象的方法。 都有缺省的修饰公共抽象
构建方法:无构建方法