尚硅谷JavaSE基础

7.6 抽象类

7.6.1 抽象类概念

1.抽象类(abstract class)

随着继承层次中一个个新子类的定义,类变得越来越具体,而父类则更一般,更通用。类的设计应该保证父类和子类能够共享特征。有时将一个父类设计得非常抽象,以至于它没有具体的实例,这样的类就可以声明为抽象类。

2. 抽象类和具体类

抽象类与具体类

       具体类 — 对现实世界一种实体的抽象定义。

       抽象类 — 对现实世界一种类型的多种实体的统一抽象定义。

例如:

       Pet类应定义为抽象类

       Bird类应定义为具体类

       抽象类中可声明抽象方法

       示例:

       public abstract class Pet {

            public abstract void speak();

            ……

    }

7.6.2特点

①用abstract关键字来修饰一个类时,这个类叫做抽象类;

②用abstract来修饰一个方法时,该方法叫做抽象方法。

抽象方法:只有方法的声明,没有方法的实现。以分号结束:abstract int abstractMethod( int a );

含有抽象方法的类必须被声明为抽象类。

 

抽象类不能被实例化。抽象类是用来被继承的,抽象类的子类必须重写父类的抽象方法,并提供方法体。若没有重写全部的抽象方法,仍为抽象类。

不能用abstract修饰属性、私有方法、构造器、静态方法、final的方法。