跳至主要內容

类与对象

Quest大约 3 分钟基础知识Class

面向对象

面向对象和面向过程

面向过程:

围绕解决问题的步骤展开,将问题拆分成一系列的方法,将这些方法按照特定顺序调用以解决问题。

spublic class Main {
    public static void main(String[] args) {
        // 定义圆的半径
        double radius = 3.0;

        // 计算圆的面积和周长
        double area = Math.PI * radius * radius;
        double perimeter = 2 * Math.PI * radius;

        // 输出圆的面积和周长
        System.out.println("圆的面积为:" + area);
        System.out.println("圆的周长为:" + perimeter);
    }
}

面向对象:

通过对现实世界的事物抽象成对象,对象具备属性(状态)和行为(方法),通过调用对象的方法以解决问题。
下面是一个围绕求圆的面积和周长的示例,简单分别展示了面向对象和面向过程两种不同的解决方案。

public class Circle {
    // 定义圆的半径
    private double radius;

    // 构造函数
    public Circle(double radius) {
        this.radius = radius;
    }

    // 计算圆的面积
    public double getArea() {
        return Math.PI * radius * radius;
    }

    // 计算圆的周长
    public double getPerimeter() {
        return 2 * Math.PI * radius;
    }

    public static void main(String[] args) {
        // 创建一个半径为3的圆
        Circle circle = new Circle(3.0);

        // 输出圆的面积和周长
        System.out.println("圆的面积为:" + circle.getArea());
        System.out.println("圆的周长为:" + circle.getPerimeter());
    }
}

面向对象三大特征

封装

封装是对客观事物的属性(状态)和行为(方法)隐藏在对象内部,不允许外部对象直接访问对象内部信息,通过暴露部分允许访问对象的方法来操作对象。封装可以隐藏实现细节,使代码更加模块化和可维护。比如可以通过车钥匙完成对车辆的关锁解锁控制,车钥匙为车辆提供外部对象访问的方法,通过车钥匙解锁按钮即可完成对车辆解锁,外部对象无需关注解锁具体实现。

继承

继承是指通过创建新的类(子类)来继承已有类(父类)的属性和方法,子类可以继承并拓展父类的功能,比如富二代小明继承房地产行业老爹的钞能力,然后拓展投资互联网行业。继承具备代码的重用性和拓展性,可以抽象出通用父类,子类可以共享父类的属性和方法,并且子类可以在此基础添加自己特有的属性和方法。

多态

多态是指同一种操作可以在不同的对象具有不同的行为和不同的执行结果(父类的引用指向子类的实例),比如空调自动运行模式下根据外部温度高低的情形做出制冷或制热的行为。多态可以使用统一的接口来处理不同类型的对象,具备代码的灵活性和可扩展性。多态有两种实现方式:静态多态性(通过方法的重载)和动态多态性(通过方法的重写和接口实现)。

类的定义


类是创建对象的模型

深拷贝浅拷贝解析

类关系

类之间有6种主要的关系类型:泛化(继承)、实现、组合、聚合、关联和依赖。六种关系的类图中箭头如下:

  • 泛化: 描述父类和子类的关系。父类也称为基类,子类也称为派生类。
  • 实现: 主要用于指定接口与实现类之间的关系
  • 关联: 表示一个类的属性持有对另一个类的一个(或多个实例)的引用
  • 依赖: 假设A类的变化导致B类的变化,那么说B类依赖于A类
  • 组合: 整体与局部的关系,但整体与局部不可分割
  • 聚合: 整体与部分的关系,整体与部分可以分离

继承与多态

类的扩展

接口

抽象类

内部类

枚举

访问对象

反射