[02] 抽象类


1、抽象类的声明

我们举过例子如Cat类继承Animal类,但是Cat你可以知道是具体什么样,两个尖耳朵,身体柔软娇小,喵喵叫,可是你告诉我,Animal长什么样呢?

如果一个类中没有包含足够的信息来描绘一个具体的对象,这个类应该使用abstract关键字设置为抽象类。
【访问权限】 abstract class 类名 { 成员列表 } 

既然我们说抽象类没有足够的信息去描述具体对象,那么显然,抽象类不能被实例化,只是为了定义子类的共同特征。但是抽象类是可以有构造方法的,这主要是让子类调用。



2、抽象方法

抽象类中可以有具体实现的方法,也可以有抽象方法,即仅作定义,而由子类去提供具体实现的方法
【访问权限】 abstract 返回值类型 方法名称( 参数列表 );

需要注意的是:
  • 含有抽象方法的类,一定需要定义为抽象类
  • 子类要求必须实现父类的抽象方法
  • 构造方法和静态方法不可以修饰为abstract
  • 抽象类可以有成员属性和非抽象的成员方法



3、示例

//抽象类,父类
public abstract class Animal {
    private String name;

    protected Animal(String name) {
        this.name = name;
    }

    public abstract String eat();

}

//子类
public class Cat extends Animal{

    private int age;

    public Cat(String name, int age) {
        super(name);
        this.age = age;
    }

    @Override
    public String eat() {
        return "猫吃东西,吃猫粮";
    }
}


posted @ 2017-09-01 10:14  Dulk  阅读(180)  评论(0编辑  收藏  举报