抽象类和接口(1)(抽象类部分)

❤️❤️前言~🥳🎉🎉🎉

hellohello~,大家好💕💕,这里是E绵绵呀✋✋ ,如果觉得这篇文章还不错的话还请点赞❤️❤️收藏💞 💞 关注💥💥,如果发现这篇文章有问题的话,欢迎各位评论留言指正,大家一起加油!一起chin up!👍👍 

💥个人主页E绵绵的博客
💥 所属专栏JAVASE题目练习  JAVASE知识点专栏  c语言知识点专栏   c语言题目练习

抽象类概念

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

此外还有抽象方法这个概念 :

💕💕在打印图形例子中, 我们发现, 父类 Shape 中的 draw 方法好像并没有什么实际工作, 主要的绘制图形都是由 Shape 的各种子类的 draw 方法来完成的. 像这种没有实际工作的方法, 我们可以把它设计成一个 抽象方法(abstract method), 包含抽象方法的类我们称为 抽象类(abstract class) 

  注意:抽象类可以不含有抽象方法,但含抽象方法的类必须为抽象类。

  所以讲完了它的概念,我们就开始它的语法吧。

抽象类语法 

❤️❤️ 在Java中,一个类如果被 abstract 修饰称为抽象类,抽象类中被 abstract 修饰的方法称为抽象方法,抽象方法不用给出具体的实现体。一个抽象类内可以不含抽象方法。

// 抽象类:被abstract修饰的类
public abstract class Shape {
    // 抽象方法:被abstract修饰的方法,没有方法体
    abstract public void draw();
    abstract void calcArea();
 
    // 抽象类也是类,也可以增加普通方法和属性
    public double getArea(){
        return area;
   }
 
    protected double area;    // 面积
}

❤️❤️注意:抽象类也是类,内部可以包含普通方法和属性甚至构造方法。但是肯定有一些不同的特性跟正常类相比。所以接下来我们就介绍下抽象类特性。

抽象类特性

🎯1.抽象类不能实例化创建对象

shape此时为抽象类类型,所以这时用它实例化创建对象就报错了。

所以抽象类的出现,就是要被继承,只有继承了抽象类才能使用它。

🎯2. 如果有抽象方法存在于抽象类中,则它的子类就必须重写这个抽象类中的所有抽象方法,不然报  错,当然也可以用abstract修饰,使子类也变为抽象类,这时就轮到子类的子类去重写完两个抽象类中的所有抽象方法,如果没有重写完,就会报错。

作者的扩展:

抽象类的子类即使被abstract修饰了,它也能对其父类中的抽象方法进行重写,如果全部重写完了,则其子类的子类就可以不用重写了(你想重写也可以,不必多此一举) ,同理如果重写了部分抽象方法,则子类的子类只要重写另一部分的抽象方法就行。(当然,你还想再重写已经重写过的抽象方法也可以)

🎯3.因为子类抽象方法需要被重写,所以它的子类抽象方法不能被final,private,static修饰  

🎯4.抽象类中可以有构造方法,供子类创建对象时,初始化父类的成员变量

🎯5.抽象类中不一定包含抽象方法,但是有抽象方法的类一定是抽象类(多次强调了)

🎯6.抽象方法不能被调用(注意是抽象类中的抽象方法,不是重写的方法),调用了抽象类中的抽象方法的话就会直接被系统说报错。

 抽象类的作用

好了所以抽象类和接口的抽象类部分就结束了,之后将给大家带来接口部分的讲解~🥳🎉🎉🎉!

相关推荐

  1. 接口抽象

    2024-03-27 20:38:02       43 阅读
  2. 抽象接口

    2024-03-27 20:38:02       33 阅读
  3. 接口抽象内部

    2024-03-27 20:38:02       21 阅读
  4. C# 抽象接口

    2024-03-27 20:38:02       15 阅读
  5. 抽象接口

    2024-03-27 20:38:02       11 阅读
  6. 接口抽象的区别

    2024-03-27 20:38:02       22 阅读
  7. 接口抽象有什么区别?

    2024-03-27 20:38:02       19 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-27 20:38:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-27 20:38:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-27 20:38:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-27 20:38:02       20 阅读

热门阅读

  1. LeetCode刷题记录——day7

    2024-03-27 20:38:02       20 阅读
  2. Qt5.14.2 全面解锁Qt5事件处理的精髓

    2024-03-27 20:38:02       18 阅读
  3. Hutool工具包中的Validator类数据校验

    2024-03-27 20:38:02       18 阅读
  4. Mysql中的执行计划怎么分析?

    2024-03-27 20:38:02       19 阅读
  5. 【零基础C语言】动态内存管理

    2024-03-27 20:38:02       17 阅读
  6. 【linux】整理一波常用linux命令

    2024-03-27 20:38:02       18 阅读
  7. 语言模型的原理、实战与评估

    2024-03-27 20:38:02       18 阅读
  8. Django query

    2024-03-27 20:38:02       21 阅读
  9. 程序猿的一些真相话,看你适不适合吃这碗饭!

    2024-03-27 20:38:02       18 阅读
  10. ubuntu系统无法播放B站视频或一直加载

    2024-03-27 20:38:02       20 阅读
  11. Dockerfile优化

    2024-03-27 20:38:02       16 阅读
  12. [蓝桥杯 2023 省 B] 冶炼金属

    2024-03-27 20:38:02       17 阅读
  13. 记录一次Vcenter跨VDS网络迁移

    2024-03-27 20:38:02       19 阅读