Java学习之抽象类

来源:互联网 发布:数控车床内螺纹编程 编辑:程序博客网 时间:2024/06/10 11:17

抽象类概述:
前面所讲的猫狗案例中,提取出了一个动物类,也创建了具体的动物对象,但其实是不对的。如果我说动物,你就不知道我具体说的是什么动物,只有给了具体的动物类你才知道是什么动物,所以说动物不是一个具体的事物,而是一个抽象的事物。只有真正的猫狗才是具体的事物,同样的,不同的动物吃的东西也是不同的,所以我们不应该在动物类中给出具体实现,而是应该给出一个声明即可。在Java中,一个没有方法体的方法应该被定义为抽象方法,而类中如果有抽象方法,则该类必须定义为抽象类。
抽象类的特点:
1、抽象类和抽象方法必须用abstract关键字修饰
2、抽象类中不一定有抽象方法,但有抽象方法的类必须定义为抽象类
3、抽象类不能实例化
(因为它不能具体的
抽象类有构造方法,但是不能实例化,那构造方法的作用是用于子类访问父类数据的初始化)
4、抽象类的子类
A:如果不想重写抽象方法,那么该子类是一个抽象类。
B:重写所有的抽象方法,这个时候子类是一个具体的类。
抽象类的 实例化其实是靠具体的子类实现的,是多态的方式
Animal a=new Cat();
实例:
这里写图片描述
抽象类的成员特点:
成员变量:既可以是变量,也可以是常量
构造方法:有,用于 子类访问父类数据的初始化
成员方法:既可以是抽象的,也可以是非抽象的。
抽象类的成员方法特性:、
A:抽象方法 强制子类做的事情
B:非抽象方法 子类继承的事情,提高代码的复用性
实例:
这里写图片描述
猫狗案例:
具体事物:猫、狗
共性:姓名 年龄 吃饭
分析:从具体到抽象
猫:
成员变量:姓名 年龄
构造方法:无参 带参
成员方法:吃饭(猫吃鱼)
狗:
成员变量:姓名 年龄
构造方法:无参 带参
成员方法:吃饭(狗吃肉)
由于有共性的地方,所以就提取了一个父类,动物。
但又因为吃饭的内容不同,所以吃饭的方法是一个抽象方法。
实现:从抽象到具体
动物类:
成员变量:姓名 年龄
构造方法:无参 带参
成员方法:吃饭();
猫类:
继承自动物类
重写吃饭()
狗类:
继承自动物类
重写吃饭()
实例:
这里写图片描述
一个类如果没有定义抽象方法,可不可以定义为抽象类?如果可以,有什么意义?
可以,不能创建对象。
抽象类不能和那些关键字共用:
private:出错,非法的修饰符组合
final:出错,非法的修饰符组合
static:无意义

0 0
原创粉丝点击