首页 > 其他分享 >小白的学习笔记2:抽象类及其使用方法

小白的学习笔记2:抽象类及其使用方法

时间:2024-08-16 09:20:59浏览次数:8  
标签:子类 shape 笔记 小白 radius 抽象类 方法 class

什么是抽象类?
类–用来描述具有共同性质的一组事物的自定义复合数据类型
通过class关键字创建一个java类。
通过abstract 修饰的java类就是抽象类。

格式: 访问修饰符 abstract class 类名{}

public abstract class Hello{ }
二、为什么要使用抽象类?
抽象类的出现体现出java的重构.[重复的动作提取出来]
抽象类是提供可以由子类共享的一般形式,由子类根据自己的实际情况去处理这个一般形式。
例如:坐车收费,出租车有收费功能【1元/公里】,公交车有收费功能【全程1元】
也就是说,一个相同的方法给不同的类实现可以有不同的方法

例子:

/**

  • @author achige

  • @desc 抽象类运用实践

  • @date 2024/8/1523:02
    */
    public class AbstractExample {
    public static void main(String[] args) {
    //各自实现抽象方法
    shape circle =new Circle(9.0);
    shape rectangle=new Rectangle(6,7);

     System.out.println("圆的面积计算:"+circle.getArea());
     System.out.println("六面体的面积计算:"+rectangle.getArea());
    
     //实现具体方法
     circle.display();
     rectangle.display();
    

    }
    }
    abstract class shape {
    //定义一个计算面积的抽象方法
    abstract double getArea();

     //抽象类中也可以有具体的方法
     void display() {
         System.out.println("这是一个立方体");
     }
    

    }

    class Circle extends shape {//继承抽象类,同时继承方法
    private double radius;

     //定义一个参数,进行传参
     Circle(double radius){
         this.radius=radius;
     }
    
     //给抽象类中的方法赋予完整的实现方式
     @Override
     double getArea(){
         return Math.PI*radius*radius;
     }
    

    }
    class Rectangle extends shape{//继承抽象类,同时继承方法
    //定义长宽
    private int width;
    private int length;

    Rectangle(int width,int length){//给抽象类中的方法赋予完整的实现方式
    this.width=width;
    this.length=length;
    }
    //使用被重写的抽象类方法
    @Override
    double getArea(){
    return length*width;

    }
    }
    抽象的概念是由具体概念依其“共性”而产生的,把具体概念的诸多个性排出,集中描述其共性,就会产生一个抽象性的概念。抽象思维,是人类思维达到高级阶段产生的一种能力,例如,当小孩子思维尚未成熟时,他们只能掌握具体概念,他们在学习代词“你、我、他”时往往遇到困难,因为代词具有较高的抽象性。

总之,抽象概念的外延大,内涵小;具体概念的外延小,内涵大。

(1)普通类可以去实例化调用;抽象类不能被实例化,因为它是存在于一种概念而不非具体。

(2)普通类和抽象类都可以被继承,但是抽象类被继承后子类必须重写继承的方法,除非自类也是抽象类。

抽象类的优点:

  1. 代码复用
    抽象类可以包含具体的实现代码,这些代码在子类中可以被复用,从而避免了代码的重复编写。例如,一个抽象类可以定义一些通用的方法,这些方法对于所有子类都是相同的,而子类只需要实现那些特定于自己的方法。
  2. 建立规范
    抽象类可以被视为一种模板或框架,为子类提供了一套必须遵守的规范。这有助于在大型项目中保持代码的一致性和可维护性。通过定义抽象方法,强制子类实现这些方法,从而确保所有子类都遵循统一的接口或行为模式。
  3. 强制实现
    当一个类继承了一个抽象类,它必须实现抽象类中定义的所有抽象方法(除非它自己也声明为抽象类)。这种机制确保了子类不会遗漏实现必要的功能,从而提高了代码的健壮性和可靠性。
  4. 支持多态
    抽象类及其子类可以参与多态的实现。通过引用抽象类型的变量来引用子类的对象,可以在运行时动态地决定具体调用哪个子类的方法,从而增加了程序的灵活性和可扩展性。
  5. 安全性
    由于抽象类不能被实例化,这在一定程度上增加了代码的安全性。可以防止程序员错误地创建抽象类的实例,从而避免了潜在的错误和异常

标签:子类,shape,笔记,小白,radius,抽象类,方法,class
From: https://www.cnblogs.com/yichige/p/18362237

相关文章

  • 网课-数据结构学习笔记2
    树状数组局限性:若区间信息不可减(即无法由两个前缀信息推出),树状数组就显得力不从心了。P6225[eJOI2019]异或橙子Trick:异或具有交换律、结合律,可拆开考虑每个位置的贡献。P3372【模板】线段树1算法:区修区查树状数组核心思想是将式子拆开,维护\(\sumc[i]\)与\(\sum......
  • 小白的学习笔记1:接口和多态,以及例子
    2024.8.21.接口接口即为一个抽象的方法,此方法定义了很多种行为,可供类们去实现,而避免了使用多种重复的else……if,while等即时运算。抽象,即为更上层的概念。比如“男人”的抽象为“人”,“人”的抽象为动物,这就是一个统领的节点。以下为示例publicclassDemo1{publicinterfa......
  • Java异常 小白版
    什么是异常在程序运行时打断正常程序流程的任何不正常的情况称为错误或异常。异常包括用户造成的异常和系统造成的异常。例如:网络连接中断、操作符越界、加载的类找不到异常产生的原因和分类1.异常产生的原因在Java中异常产生,主要是有三种原因:编写程序代码中的错误产生......
  • 这里是新人一枚,希望以后各位大佬可以多多指点,今天学习了markdown语法笔记双手奉上,求指
    Markdown学习文档创建下载typora将文件扩展名改为md即可标题用#+空格+标题名(几级标题就是几个#,最多支持至六级标题)字体晨昏朝暮之间(粗体在字两边加**)晨昏朝暮之间(斜体两边加*)晨昏朝暮之间(斜体加粗两边加***)晨昏朝暮之间(删除线两边加~~)引用晨昏朝暮之间(引用>+空格......
  • 嗨,这里是新人小白一枚,希望以后可以向各位大佬多多吸取经验,今天学习了Markdown的使用,下
    Markdown学习文档创建下载typora将文件扩展名改为md即可标题+空格+标题名(几级标题就是几个#,最多支持至六级标题)字体晨昏朝暮之间(粗体在字两边加**)晨昏朝暮之间(斜体两边加*)晨昏朝暮之间(斜体加粗两边加***)晨昏朝暮之间(删除线两边加~~)引用晨昏朝暮之间(引用>+空格即......
  • 嗨,这里是新人小白一枚希望以后可以和大家多多交流,今天学习了Markdown,笔记双手奉上,求大
    Markdown学习文档创建下载typora将文件扩展名改为md即可标题+空格+标题名(几级标题就是几个#,最多支持至六级标题)字体晨昏朝暮之间(粗体在字两边加**)晨昏朝暮之间(斜体两边加*)晨昏朝暮之间(斜体加粗两边加***)晨昏朝暮之间(删除线两边加~~)引用晨昏朝暮之间(引用>+空格即......
  • C:指针学习-指针变量—学习笔记
    今日伊雷娜:目录前言:1、字符指针变量1.1使用字符指针存放字符1.2使用字符指针变量存放字符串 2、数组指针变量2.1什么是数组指针变量?2.2数组指针变量初始化2.3关于数组指针类型的解析3、函数指针变量3.1函数地址3.2 函数指针变量的创建3.3关于指针的连续......
  • libarchive库笔记:tar.gz格式压缩文件编程
    libarchive,一个支持多种格式的压缩和归档的C语言库,包含常见的tar、cpio和zcat命令行工具的实现。本文展示一个libarchive库C语言编程的tar.gz格式压缩文件示例。简单代码示例:#include<stdlib.h>#include<stdio.h>#include<string.h>#include<fcntl.h>#include"arch......
  • 【读书笔记】如何分析原因类的业务场景
    本书是猴子数据分析3.3节的笔记场景:某店铺上半年完成的利润与年初制定的目标还有很大差距,如果按目前销售进度,到年底是没有办法完成全年目标的。如何找到利润没有达到目标的原因,并拿出能完成年度目标的方案?一、明确问题1)保证数据源的正确性(时间、地点、数据来源等)2)保证对业......
  • PCB入门笔记—绘制一个只有两个排针的PCB全流程记录—立创EDA专业版
    PCB绘制入门......