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

什么是抽象类?
类–用来描述具有共同性质的一组事物的自定义复合数据类型
通过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.PIradiusradius;
    }
    }
    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. 安全性
    由于抽象类不能被实例化,这在一定程度上增加了代码的安全性。可以防止程序员错误地创建抽象类的实例,从而避免了潜在的错误和异常
posted @ 2024-08-16 09:12  Yuri-L_210162701054  阅读(46)  评论(0)    收藏  举报
html