Java中抽象类的概述及其详解(什么是抽象类?为什么要使用抽象类?抽象类的特点?)

梦里梦外; 2022-02-03 14:29 445阅读 0赞

回想前面我们的猫狗案例,提取出一个动物类,并且我们在前面也创建了动物对象,其实这是不对的!为什么呢?

  • 因为我说动物,你知道我说的是什么动物吗?只有看到了具体的动物,你才知道,这是什么动物。所以说,动物本身并不是一个具体的事物
  • 而是一个抽象的事物。只有真正的猫,狗才是具体的动物。同理,我们也可以推想,不同的动物吃的东西应该是不一样的,所以,我们不应该在动物类中给出具体体现,而是给出一个声明即可。

所以,在Java中,一个没有方法体的方法应该定义为抽象方法,而类中如果没有抽象方法,该类必须定义为抽象类。
抽象类概述:

  • 动物不应该定义为具体的东西,而且动物中的吃,睡等方法也不应该是具体的。
  • 我们把一个不是具体的功能称为抽象功能,而一个类中如果有抽象功能,该类必须是抽象类。

那么,抽象类有什么特点呢

  • A:抽象类和抽象方法必须用abstract关键字修饰
  • B:抽象类中不一定有抽象方法,但是有抽象方法的类必须定位为抽象类
  • C:抽象类不能实例化
    因为他不是具体的,抽象类也有构造方法,但是不能实例化,那么构造方法的作用是什么呢?
    用于子类访问父类数据的初始化。
  • D:抽象类的子类问题
    a:如果不想重写抽象方法,该子类是一个抽象类
    b:重写所有的抽象方法,这个时候子类是一个具体的类。
  • E:抽象类的实例化其实是靠具体的子类来实现的,是使用多态的方式
    Animal a = new Cat();

代码示例:

  1. //abstract class Animal 抽象类的申明格式
  2. abstract class Animal {
  3. //抽象方法
  4. //空方法体和没有方法体的区别
  5. //public abstract void eat() {}//空方法体 ,这个会报错。抽象方法不能有主体
  6. public abstract void eat(); //没有方法体
  7. public Animal() {}
  8. }
  9. //子类是抽象类
  10. abstract class Dog extends Animal {
  11. }
  12. // Cat不是抽象的, 并且未覆盖Animal中的抽象方法eat()
  13. //子类是具体类,重写抽象方法
  14. class Cat extends Animal {
  15. public void eat() {
  16. System.out.println("猫吃鱼!");
  17. }
  18. }
  19. class AbstractDemo {
  20. public static void main(String[] args) {
  21. //创建对象
  22. //Animal是抽象的; 无法实例化
  23. //Animal a = new Animal();
  24. //通过多态方法
  25. Animal a = new Cat();
  26. a.eat();
  27. }
  28. }

发表评论

表情:
评论列表 (有 0 条评论,445人围观)

还没有评论,来说两句吧...

相关阅读

    相关 什么抽象什么抽象方法?

    抽象类:抽象类就是不能使用new方法进行实例化的类,即没有具体实例对象的类,抽象类有点类似于“模板”的作用,目的是根据其格式来创建和修改新的类,对象不能由抽象类直接创建,只可以

    相关 Java为什么使用抽象

    抽象类  抽象类与接口紧密相关。然接口又比抽象类更抽象,这主要体现在它们的差别上:1)类可以实现无限个接口,但仅能从一个抽象(或任何其他类型)类继承,从抽象类派生的类仍可实现接

    相关 什么抽象

    在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 抽象

    相关 什么抽象

    在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 抽象

    相关 什么抽象

    第四章 抽象类(入门级,大牛忽略) 4.1 抽象类概述(以下内容可能有点烦 但是通俗易懂 简直舒服) > 我们创建一个动物类,并且在这个类中创建动物对象,但是当你提

    相关 抽象什么特点

      抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。通常在编程语句中用abstract修饰的类是抽象类。...