Java中抽象的概念
抽象的表述
我们之前所说的猫,狗,猪,熊猫,老虎等等都是动物具体的例子,
而动物本身是一个抽象的概念
但是回想一下我们之前都是将动物写成了一个具体的,而类又可以
创建对象,但是实际上抽象的东西本身应该不能被实例化
并且动物中吃的方法应该也不是一个具体的实现,以及所有动物共同
拥有的方法在动物中应该都是抽象的表现
我们今天之后,我们把一个不具体的功能,叫做抽象方法,而如果一个
类中有抽象方法,我们就把这个类称之为抽象类。
抽象类的特点
1、抽象类和抽象方法都要用一个关键字修饰:abstract
修饰一个类 放在class的前面
举例: abstract class Animal3{}
修饰一个方法 一般是放在权限修饰符后面
定义一个抽象的show方法
举例:public abstract void show();
2、有抽象方法的类一定要是抽象类,抽象类不一定要有抽象方法,
具体的类中不能有抽象方法,抽象类中既可以存在抽象方法
也可以存在有方法体的方法。
3、抽象类不能被实例化
既然不能被实例化,那写在抽象类中的方法如何被调用呢?
抽象类如何创建呢?
通过多态的形式,使用具体的子类去实例化调用方法,
专业术语称之为:抽象多态
4、如果继承抽象类的是一个具体的子类,需要重写该抽象类中所有的抽象方法
如果继承抽象的也是一个抽象类,可以不去重写父类中的抽象方法,
也可以选择性的去重写。
抽象类的成员的特点
1、成员变量:
既可以是变量,也可以是常量
2、构造方法:
可以存在构造方法,我们上一个程序中,才总结出抽象类不能被实例化,
这里构造方法意义是什么?
我们之前在继承中还说过要想初始化子类,必须先初始化父类,所以这里
构造方法是提供初始化父类的作用
3、 成员方法:
可以是抽象方法,但是具体的子类必须要重写该方法
也可以不是抽象方法,提高代码的复用性。
注意:
1、抽象类中可以没有抽象方法
2、抽象类不能被实例
抽象类中可以存在哪些关键字?
1、abstract可以和public关键字共存
2、private和abstract关键字冲突
3、static和abstract关键字冲突
4、final和abstract关键字冲突
注意:
Java中的所有的类都有一个共同的父类:Object