Java面向对象之抽象类


面向对象的设计原因中所有的对象都是通过类来进行描绘的,但是并不是所有的类都是用来描述对象的,

如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的就是抽象类

抽象类正常类最大的区别就是不能实例化对象,所以抽象类必须被继承,才能被使用;但是抽象类的其

它功能如:成员变量、成员方法和构造方法依然存在

一、抽象类的定义和使用

在Java语言中使用abstract class来定义抽象类,而且只能通过其他类来继承抽象类

//文件名为Test.java
public abstract class Test{}
//文件名为smallTest
public class smallTest extends Test{}

二、抽象方法

抽象方法必须是一个特别的成员方法,该方法的具体实现是由它的子类确定的,那么可以在父类中声明

该方法是一个抽象方法;而且抽象方法所在的类一定是抽象类;

abstract关键词同样可以用来声明抽象方法,抽象方法只包含一个方法名而没有方法体;抽象方法没有定

义,方法名后面直接跟上一个分号,而不是花括号

public abstract class Employee{
    public abstract int getMsg();//抽象方法
}

任何子类必须重写父类的抽象方法,或者声明自身是一个抽象类;

三、其他规定

  • 抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类

  • 抽象类中的抽象方法只是声明,不包含方法体,即不给出方法的具体实现

  • 构造方法和类方法(用static方法修饰的方法)不能声明为抽象的方法