java abstract基础

来源:互联网 发布:装甲战争99a数据 编辑:程序博客网 时间:2024/05/29 07:58

Java实现抽象类有两种方法:abstract以及interface。此处只记录abstract的用法。

1.先谈谈为什么需要抽象类

在现实生活中,我们在描述一件物品时,通常是指描述一件具体的物品,例如碗、碟、勺,他们都有自己的特征和作用,这种具体的事物,可以称为实体对象。现实中也存在另一种不能称为物品而是作为某一类物品的总结和概括,例如瓷器、怪物,我们脑海里无法形成某一个具体的事物,只是知道这是对某一类事物的总结和概括。我们可以把碗碟勺理解成实体类,它们都可以被实例化。而瓷器就是对碗碟勺的抽象,即抽象类,它有一个很明显的特征:不能实例化。我们知道,任何一个对象都可以通过类来描绘,但是反过来,并不是所有类都是用来描绘对象的,抽象类就是用来描绘那些不能实例化的抽象事物。

2.Java对抽象类的支持

在java中声明抽象类,只需在在类前加上abstract修饰符。使用abstract修饰的抽象类可以有自己的数据成员和方法(包括抽象和非抽象的),并且在继承时可以重写和修改,但是正如前面所说,它不能被实例化,也就是说我们不能构造这个类的对象,它只能被子类继承。当然继承的子类也可以是抽象类。注意abstract修饰的抽象类可以没有抽象方法,但是有抽象方法的类必须用abstract修饰。如下定义了一个简单的抽象类china,它有自己的变量和方法,其中f3是抽象方法,抽象方法没有具体的实现。

public abstract class China{

private int x;
public float y;
private final void f1(){
return;
}
public void f2(){
return;
}
public abstract  void f3();

}

假如要使用上面定义的抽象类,必须通过继承,假如继承的子类不是抽象类,那么子类必须要实现基类中的抽象方法。如下

public class EntityChina extends China{
public EntityChina (){

}

@Override
public void f3() {
}

}

此时就可以通过构造方法来实例化EntityChina ,并且可以调用f2方法。


我们前面说过,继承自抽象方法的子类也可以声明为抽象方法,他可以重写基类中的非抽象方法(重写抽象方法根本没有意义,因为没有实现),也可以定义新的抽象方法。如下

public abstract class  AbsChina extends China{
public void f2(){
System.out.println("extends from China");
return;
}
public abstract  void f4();
}



0 0
原创粉丝点击