关于java抽象类

一 什么是抽象类?

  普通的类具有比较完善的功能,它可以直接直接产生实例化对象。而抽象方法具有抽象的方法,其实,就是因为有了抽象方法,一个“普通类变成了一个抽象类”。

        抽象方法在抽象类中可以定义,但是可以不写,就是直接可以只有一个函数名称。什么时候实例化这个抽象类的时候。可以在子类中重写具体的这个方法。

二抽象类的使用

      在我做的实验三中,我们主要内容是构造一个可复用性比较高的图,所以,对于图中的元素点,我对他进行了抽象类的定义:(由于这个抽象类比较复杂,我把他简化了一下
public abstract class Vertex {
String label;   //点的内容
 String[] args =new String[3];   //点的属性
 public Vertex(String label)    //构造函数

 {
  this.label=label;
 }
abstract void fillVertexInfo (String[] args);    //抽象函数得到点的属性
}      
           这就是一个抽象类,但是 如果在直接 Vertex  v = new Vertex(a); 是会报出错误,Vertex 是抽象的,无法直接进行实例化操作 。为什么不能直接实例化呢?当一个类实例化之后,就意味着这个对象可以调用类中的属性或者放过了,但在抽象类里存在抽象方法,而抽象方法没有方法体,没有方法体就无法进行调用。既然无法进行方法调用的话,又怎么去产生实例化对象呢。
         因此 抽象类必须有子类,使用extends继承,一个子类只能继承一个抽象类;
          我们看下面抽象类的具体化:

public class Word extends Vertex{
 
 public Word(String label) {
  
  super(label);
  // TODO Auto-generated constructor stub
 }
 @Override
 void fillVertexInfo(String[] args) {
   this.args = args;
 }
}
这样 抽象类就被实例化了,我们可以直接new他的子类。 因此: 抽象类继承子类里面有明确的方法覆写要求,而普通类可以有选择性的来决定是否需要覆写; 抽象类实际上就比普通类多了一些抽象方法而已,其他组成部分和普通类完全一样; 普通类对象可以直接实例化,但抽象类的对象必须经过向上转型之后才可以得到。

 
 

猜你喜欢

转载自blog.csdn.net/weixin_41145325/article/details/80209849
今日推荐