java抽象类

来源:互联网 发布:淘宝首页轮播图 编辑:程序博客网 时间:2024/06/17 22:47

概述:
抽象类可以包含抽象方法,这种方法只有方法的声明,而没有方法的实现,也可以包含非抽象方法,反之不能在非抽象类中声明抽象方法。也就是说只有抽象类才能拥有抽象方法。
如果一个抽象类中只有抽象方法其他什么都没有,则使用接口更合适。
抽象类的定义如下:

public abstract class Shape{    //定义体}//为使此类有用,它必须有子类

抽象方法的定义:

public abstract <returnType> <methodName>(参数列表);

具体示例:

public abstract class Drawing {    public abstract void drawDot(int x,int y);    public void drawLine(int x1,int y1,int x2,int y2){        //通过连续画点的方式画出线条    }}

具体说明抽象类的作用:

abstract class ObjectStorage {    int objectnum = 0;    Object storage[] = new Object[100];    abstract void put(Object o);    abstract Object get();}
public class Queue extends ObjectStorage {    private int top = 0;    private int bottom = 0;    @Override    void put(Object o) {        storage[top ++] = o;        objectnum ++;    }    @Override    Object get() {        objectnum --;        return storage[bottom ++];    }}
public class Stack extends ObjectStorage {    private int point = 0;    @Override    void put(Object o) {        storage[point ++] = o;        objectnum ++;    }    @Override    Object get() {        objectnum --;        return storage[-- point];    }}

如上所述抽象类被非抽象的子类继承时必须实现父类的抽象方法。
这里有一点需要明确,包含抽象方法的类一定是抽象类,但抽象类中的方法不一定都是抽象方法。

对一个抽象类不能创建对象,除非通过间接的方法来创建其子类的对象,但是可以定义一个抽象类的引用。也就是说形如 new ObjectStorage()的表示是错误的。

这里写图片描述

但是下述表示则是正确的:

 ObjectStorage objectStorage = new Stack();
0 1