首页 > 编程语言 >Java 抽象类

Java 抽象类

时间:2024-06-21 19:56:31浏览次数:22  
标签:Java 子类 abstract 抽象 抽象类 方法 void


目录

1、什么是抽象类

2、定义抽象类

3、抽象类特性

4、 抽象类的作用


1、什么是抽象类

抽象类,顾名思义就是抽象的。该类没有包含足够的信息去描绘一个具体的对象,这样的类称为抽象类。抽象类着一种优化了的概念组织方式,它是所有子类的公共属性的集合,抽象类用来描述对象的一般状态和属性,然后在子类中再去实现这些状态和行为,以适应对象的多态性。抽象类的出现,就是为了被继承。

概念也是比较抽象的,看图帮助理解八。

2、定义抽象类

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

抽象类语法:

 abstract class 类名称 {

       成员变量;

      方法(){.........}      //一般方法

      抽象方法() ;           //抽象方法,无方法体

 }

代码如下

public abstract class Shape {
    abstract void draw();
    void print(){
        System.out.println("抽象类中的普通方法。。。。");
    }
}
public class Triangle extends Shape{

    @Override
    void draw() {
        System.out.println("画一个三角形.....");
    }
}
public class Test {
    public static void main(String[] args) {
        Triangle  triangle =new Triangle();
        triangle.draw();//打印结果:画一个三角形.....
    }
}

3、抽象类特性

那么在使用抽象类的时候有什么需要注意的地方,一起往下看吧。

(1)抽象类不能直接实例化对象

Shape shape =new Shape();

//Error Shape是抽象的,无法实例化对象

 (2)抽象方法的修饰词不能是Private

public abstract class Shape {
   private abstract void draw();
}

//Error 

 (3) 抽象方法不能被static 和 final修饰

abstract final void print();

//Error 因为抽象方法需要被子类重写

(4) 抽象类被子类继承,子类必须重写父类中的抽象方法

(5)抽象类中不一定包含抽象方法,但有抽象方法的类一定是抽象类

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


4、 抽象类的作用

多了一重编译器的校验。

抽象类本身不能被实例化, 要想使用, 只能创建该抽象类的子类. 然后让子类重写抽象类中的抽象方法.

UU们可能会说了, 普通的类也可以被继承呀, 普通的方法也可以被重写呀, 为啥非得用抽象类和抽象方法呢?

使用抽象类相当于多了一重编译器的校验.
很多语法存在的意义都是为了 "预防出错", 例如我们曾经用过的 final 也是类似. 创建的变量用户不去修改, 不就相当于常量了。 但是加上 final 能够在不小心误修改的时候, 让编译器及时提醒我们.
充分利用编译器的校验, 在实际开发中是非常有意义的.

标签:Java,子类,abstract,抽象,抽象类,方法,void
From: https://blog.csdn.net/m0_73107796/article/details/139863674

相关文章

  • 【Java获取天气信息】
    获取天气信息需求源代码返回信息详解天气预报API城市代号需求页面需要显示天气信息,所以需要调用天气API获取天气信息,找了好多api,还是SOJSON的最方便最实惠(免费),不需要注册和申请秘钥。源代码直接贴代码,拿着即用(为了减少访问接口压力,这里使用了redis缓存4小时)......
  • JAVA每日总结day6.21
    ok了家人们,今天我们学习了面向对象中关键字的使用和抽象类,话不多说,我们一起看看吧,(今天终于星期五了,芜湖!!!)一,this和super关键字1,this关键字的三种用法1.1this的意义 this:表示当前对象this可以访问:本类的成员属性、成员方法、构造方法;1.2 this.成员变量(第一种)......
  • JavaScript算法之龟兔赛跑
    简介:龟兔赛跑算法,又称弗洛伊德循环检测算法,是一种在链表中非常常用的算法。它基于运动学和直觉的基本定律。本文旨在向您简要介绍该算法,并帮助您了解这个看似神奇的算法。假设高速公路上有两辆车。其中一辆的速度为x,另一辆的速度为2x。它们唯一能相遇的条件是它们都在循环......
  • Java——访问修饰符
    一、访问修饰符是什么Java中的访问修饰符用于控制类、接口、构造函数、方法和数据成员(字段)的可见性和访问级别。Java提供了四种访问修饰符:访问修饰符同一类内同一包内不同包的子类不同包的非子类适用对象public可见可见可见可见类、接口、变量、方法protected可见可见可见......
  • Java-英语字符串进行单词分割
    (摘自头歌)任务描述将一段英语字符串进行单词分割。相关知识需要掌握:如何将字符串进行分割。String.split()拆分字符串lang包String类的split()方法publicString[]split(Stringregex)publicString[]split(Stringregex,intlimit)//limit参数控制模式应用的次数,因......
  • java面向对象三大特征
     免责声明:java基础资料均来自于韩顺平老师的《循序渐进学Java零基础》教案,具体视频内容可以去B站观看,这些资料仅用于学习交流,不得转载用于商业活动1.Java面向对象三大特征Java面向对象编程有三大特征:封装、继承、多态1.1封装封装(encapsulation)就是把抽象出的数据【属性】......
  • java微信公众平台----带参数二维码生成和扫描事件
    功能是在详情页面点击按钮,生成二维码。打开微信扫码,扫码之后手机跳转到公众号并发送一条模板消息。点击模板消息,跳转到H5的详情页面。参考推荐:https://blog.csdn.net/weixin_42720002/category_8977300.html官方文档:https://developers.weixin.qq.com/doc/offiaccount/Account_Ma......
  • Java基础:throw和throws的详解
    总结来说,throw是用来抛出一个具体的异常实例,而throws是用来声明方法可能会抛出哪些类型的异常,是对调用者的一种通知和要求。1.throw作用:throw关键字用于在方法体内实际抛出一个异常实例。当程序运行到throw语句时,指定的异常会被创建并抛出,立即终止当前方法的执行,并将控制权......
  • 一文读懂Java线程池之自定义线程池、设置合适的线程数量、线程池阻塞队列、线程拒绝策
    在上篇我们学习了线程池各个参数的含义,线程池任务处理流程,使用线程池的好处等内容,本篇我们学习如何创建一个适合我们业务的线程池。为此,我们有必要先学习一下如何大概确定我们线程池核心线程数、怎么设置阻塞队列的类型与大小、当线程池没有能力处理任务了该如何使用拒绝策略等......
  • Java入门指南:大一新生的编程初体验
    引言作为一名大一新生,踏入编程世界可能会让人感到既兴奋又有些忐忑。Java作为一种广泛使用的编程语言,以其强大的功能和跨平台的特性,成为了许多计算机科学课程的首选。本文将带你一起走进Java的世界,分享一些入门的知识和学习经验,希望对刚开始学习Java的你有所帮助。1.为什么......