使用 Java 枚举和自定义数据类型( 二 )


  • 方法和字段:枚举可以具有字段和方法 , 提供比静态常量更多的功能 。
  • 枚举的常见用途
    • 表示固定的常量集:例如一周中的几天、方向、流程状态等 。
    • 单例模式:由于枚举本质上是单例 , 因此它们可用于实现单例行为 。
    • 策略模式实现:枚举可以实现接口定义的不同策略 。
    Java 枚举提供了强大而灵活的机制来定义一组具有附加功能的相关常量 。它们提供类型安全、增强代码可读性并提供方法和字段等高级功能,使它们成为 Java 语言不可或缺的一部分 。创建和使用自定义数据类型Java 是一种面向对象的编程语言,允许开发人员创建自己的数据类型 。这些自定义数据类型是使用类定义的,类是 Java 中面向对象编程的构建块 。它们支持封装、继承和多态性,使您的代码更加模块化、可重用和灵活 。定义自定义数据类型Java 中的自定义数据类型是通过定义类来创建的 。类是对象的蓝图;它根据数据(字段)和可以对该数据执行的操作(方法)来定义类型 。这是一个例子: 
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    public class Vehicle {private String make;private String model;private int year;public Vehicle(String make, String model, int year) {this.make = make;this.model = model;this.year = year;}// Getters and setters for each field}在此示例中 , Vehicle是封装车辆属性和行为的自定义数据类型 。自定义数据类型中的构造函数构造函数是用于初始化对象的特殊方法 。当创建类的新实例时 , 将调用构造函数来设置对象的初始状态 。以下是我们在类中使用构造函数的方式Vehicle: 
    •  
    Vehicle myCar = new Vehicle("Honda", "Civic", 2020);Vehicle这将创建一个代表 2020 Honda Civic 的新对象 。向自定义数据类型添加方法方法定义类的对象的行为 。对于该类Vehicle,我们可以添加方法来显示有关车辆的信息或计算其年龄: 
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    public void displayInfo() {System.out.println(make + " " + model + " (" + year + ")");}public int calculateAge(int currentYear) {return currentYear - year;}封装和数据隐藏封装是面向对象编程的关键原则之一 。它涉及将数据和对一个单元内的数据进行操作的方法捆绑在一起,并限制对某些对象组件的访问 。private这是通过使用、public和 等访问修饰符来实现的protected 。在我们的Vehicle课程中,我们将字段设为私有,并提供公共 getter 和 setter 来访问这些字段 。这确保了不能从类外部直接访问字段,从而保持对象状态的完整性 。继承和扩展自定义数据类型继承允许新类继承现有类的属性和方法 。这是代码可重用性和扩展性的强大功能 。例如,我们可以扩展我们的Vehicle类: 
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    public class ElectricVehicle extends Vehicle {private int batteryCapacity;public ElectricVehicle(String make, String model, int year, int batteryCapacity) {super(make, model, year);this.batteryCapacity = batteryCapacity;}// Additional methods specific to electric vehicles} 在这里,ElectricVehicle继承Vehicle并添加额外的属性和行为 。多态性和自定义数据类型多态性允许将不同类的对象视为公共超类的对象 。在处理共享公共超类但具有不同行为的对象集合时,它特别有用 。例如,我们可以将ElectricVehicle对象视为Vehicle对象,但仍然调用ElectricVehicle类中重写的方法 。最佳实践