java中抽象类的定义是什么?它的方法是什么?

BSO 2020-11-13 16:05:35 java常见问答 4170

上次已经为大家介绍过java抽象类的特点有哪些的主要内容了,可以看出抽象类的内容是比较丰富的。今天要介绍的也是与之相关的内容。也就是java中抽象类的定义是什么。一起来了解一下吧。

首先我们需要知道的是,在类的继承中,如果一个新的子类被定义,子类变得越来越具体,父类变得更加一般和通用,类的设计应该保证父子类能够共享特征,有时将父类设计得非常抽象,使得父类没有具体的实例,这样的类叫做抽象类;一般当我们设计一个类,不需要创建此类的实例时,可以考虑将该类设置成抽象类,让其子类实现这个类的抽象方法

其实,抽象类可以没有抽象方法的,代码如下所示:

 //抽象类
 abstract class Person
 {
     String name;
     public Person()
     {} //抽象类的构造方法
     public abstract void dink(); //抽象方法,无{}方法体
     public void eat()
     { //非抽象方法
     };
 }
 class Student extends Person
 {
     @Override
     public void eat()
     {
         System.out.println("吃饭");
     }
     @Override
     public void dink()
     {
         System.out.println("喝水");
     }
 }

但是,abstract修饰的方法也可以说是抽象方法。

抽象方法的特征:

1.格式,没有方法体,包括{ },例如public abstract void dink();

2.抽象方法只保留方法的功能,具体的执行,交给继承抽象类的子类,由子类重写改抽象方法

3.如果子类继承抽象类,并重写了父类的所有的抽象方法,则此子类不是抽象类,可以实例化的

4.如果子类继承抽象类,没有重写父类中所有的抽象方法,意味着子类中还有抽象方法,那么此子类必须必须声明为抽象的。

如下图:

java中抽象类的定义是什么

上面的例子中,Student子类继承抽象父类,自重写了eat()抽象方法,没有重写drink()抽象方法,会报错,解决方法是把drink()方法也重写了,或者把Student也变成抽象类。

最后说一下,抽象类的使用场景:

抽象类一般在运用多态时,比较适用。

由上文内容可以看出来java中抽象类的定义还是比较清楚的,它的方法也是很容易实现的。如果你对java知识感兴趣,想要了解跟多java常见问题,敬请关注奇Q工具网。

推荐阅读:

抽象类和接口的区别是什么?有什么区别? 

java抽象类和接口的区别?java抽象类和接口区别面试题

抽象类和普通类的区别是什么?java类和抽象类的区别