第6章 抽象类

来源:互联网 发布:浙江省网络师训平台 编辑:程序博客网 时间:2024/06/07 02:59
  1. 抽象方法:
只有方法签名,没有方法实现。
抽象方法(没有方法体大括号,还要加分号):public abstract String getType();
空方法体的方法(有方法体,但是为空):public String getType() {}

  1. 抽象类:
(1)包含有抽象方法的类只能被定义为抽象类,但是抽象类中可以没有抽象方法。
抽象类 VS 普通类:
(2)抽象类中可以包含成员变量、方法(普通方法和抽象方法)、构造器、初始化块、内部类(接口、枚举)5中成分。
(3)相比于普通类:“有得有失”—“得”抽象类多了一个能力就是可以包含抽象方法,“失”抽象类失去一个能力就是不能用于创建实例只能当做父类被其他子类继承
(4)继承了抽象类的子类:必须实现抽象类中的所有抽象方法

abstract关键字修饰的方法必须被其子类重写才有意义,利用这个优势,可以更好的发挥多态的优势,使程序更加灵活~

  1. 三个不能:
(1)final与abstract永远不能同时使用:final修饰的类不能被继承,final修饰的方法不能被重写(可以被覆盖),而abstract修饰的方法必须要由子类来重写实现。
(2)static与abstract不能同时修饰某个方法:static修饰的方法只属于类本身,只能通过类调用该方法,但是如果被abstract修饰,则没有方法体,无法执行。
(3)private与abstract不能同时修饰方法:private修饰的方法不能再类外访问,因此子类不能重写父类的private方法(但可以在子类重定义与该方法同名同参的新方法)。

  1. 抽象类的作用是什么呢?
父类提供了多个子类的通用方法,并把一个或多个留给其子类实现,这是一种模板模式!

原创粉丝点击