抽象类和抽象方法
------------恢复内容开始------------
1.为什么要有抽象类?
随着子类一直继承父类,子类会变得越来越具体,(比如说父类是人,子类分为男人和女人,再继承下去,分为不同职业的人,...一直细分下去),相反的,父类会变得越来越通用,既然这样,将通用性做到极端,不定义任何的具体实例,这样的类叫做抽象类。
2.abstrac关键字的使用
2.1抽象类
一般的我们声明一个类如下:
class Person{ String name; int age; public void hello(){ System.out.println("hello!"); } public void eat(){ System.out.println("eating...."); } }
声明一个抽象类也很简单 加上abstract关键字就行
abstract class Person{ String name; int age; public Person(){ } public Person(String name,int age){ this.name = name; this.age = age; } public void hello(){ System.out.println("hello!"); } public void eat(){ System.out.println("eating...."); } }
之后写一个test测试一下
public class AbstrcatTest { public static void main(String[] args) { AbstrcatTest test = new AbstrcatTest(); Person p1 = new Person(); //'Person' is abstract; cannot be instantiated } }
引出第一个结论 抽象类是不能实例化的
其次 抽象类中一定有构造方法,便于子类实例化时使用
2.2抽象方法
抽象方法没有方法体,只有方法的声明
包含抽象方法的类一定是抽象类,反之,抽象类中可以没有抽象方法
若子类重写了所有父类中所有的抽象方法,则子类可以实例化
否则,子类也只能声明为抽象类
3.为什么要有抽象类
抽象类是用来模型化那些父类无法确定全部实现,而由子类提供具体实现的对象的类。
例如: 父类为几何图形,子类为圆和正方形,父类子类中都有求面积的方法,但父类没有具体的几何图形,所以写个求面积的方法是不太现实的,因此产生了只写方法声明而不写方法体的情况。
------------恢复内容结束------------
浙公网安备 33010602011771号