黑马程序员技术交流社区
标题: 大数据基础班笔记 [打印本页]
作者: Oneforall 时间: 2018-4-9 22:46
标题: 大数据基础班笔记
抽象类
1.abstract
关键字,用于修饰方法和类
2.抽象方法:
不同子类的方法是相似,但是具体内容又不太一样,所以我们只能在父类中抽取他的声明,没有具体的方法体,没有具体方法体的方法就是抽象方法
格式:抽象方法就是把方法用abstract修饰,去掉方法的{}用分号代替。
格式举例:
public abstract void eat();
3.抽象类
有abstract修饰的类是抽象类。
有抽象方法的类必须是抽象类。
如果一个类里有抽象方法,这个类的子类必须重写所有的抽象方法。除非这个子类也是抽象类。
格式:抽象类就是多了一个abstract来修饰
格式举例:
abstract class Animal {
public abstract void eat();
public void run() {
}
}
4.抽象类的特点
抽象方法只能在抽象类里面
抽象类中可以没有抽象方法
抽象类和抽象方法必须被abstract修饰
抽象类不能创建对象(不能实例化)
抽象类中可以有非抽象的方法
抽象类和类的关系也是继承
一个类继承了抽象类要么重写所有的抽象方法,要么他自己是抽象类
5.抽象类的成员特点
成员变量
可以有成员变量
可以有常量
成员方法
可以有抽象方法
可以有非抽象方法
构造方法
可以有构造方法的,因为需要对抽象类的成员变量进行初始化(理解:虽然抽象类不能直接创建对象。但是我们写抽象类一般是写一个子类去继承抽象类,子类的构造方法会调用父类的构造,所以抽象类肯定也有构造方法。)
总结:普通类有的抽象类都有,只不过抽象类比普通类多了一个abstract修饰,并且里面可能有抽象方法。
6.什么情况下使用抽象
①某个方法在不同的子类中有不同的实现的时候
②强制性要求所有子类都必须实现某个方法的时候。
7.抽象类的细节
抽象关键字abstract不可以和哪些关键字共存? private、final、static
如果把方法用private修饰了,那么这个方法就不能被子类继承了,更不用说让子类去重写了。但是我们使用abstract其实就是为了让子类去重写这个方法。这样就矛盾了,所以无法共存。
加了final该方法就不能被重写,而我们在方法前面加abstract就是为了让子类去重写,互相矛盾了。所以不能共存。
方法加了static,这个方法就属于这个类了。这个方法就不会被继承,那就更别提被重写了。而我们加abstract就是为了让子类去重写某个方法。相互矛盾了,所以不能一起使用。
作者: 小浙姐姐 时间: 2018-4-10 17:37
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |