JAVA抽象类 关键字abstract
- abstract关键字只能修饰类和方法
修饰方法:
只有方法结构,没有方法体。要注意的是,在查看部分工具类的源码时,可能会看到某些用native修饰的”没有方法体“的方法,它不是抽象类,它有方法体,只不过它执行的过程是由其他语言(例如C或者C++)写的,我们看不到而已。
修饰类:
用abstract修饰符修饰的类称为抽象类
2.抽象类里不一定含有抽象方法,但是含有抽象方法的类一定是抽象类。
3.抽象类的特点:
(1).如果父类是抽象类,那么该子类必须重写父类所有的抽象方法,否则该子类还是抽象类。可以说:如果子类是抽象类,那么子类可以不重写父类的所有抽象方法。如果子类是具体类,子类必须重写父类所有的抽象方法。
(2).对于属性:可以含有一般的属性,也可以被private static final等修饰。
(3).对于方法:可以含有一般的方法,也可以被private static final修饰。(抽象类的方法允许被abstract修饰)
(4).对于块:可以含有一般的代码块,也可以含有static修饰的代码块。
(5).对于构造方法:可以含有构造方法,包括重载。
简单来说:抽象类和普通类的区别,就是有没有抽象方法。(抽象类允许有抽象方法,非抽象类不允许有抽象方法。)
4.抽象类不允许实例化。
5.抽象类含有构造方法,但是我们不能通过调用构造方法直接创建对象。
6.抽象类只能通过子类继承来做事。