0 0

java enum类中为什么构造器必须是私有的。5

1、java enum类中为什么构造器必须是私有的。

2、java enum类中属性必须是私有的吗?

3、java类必须有构造器吗?
 
2012年4月19日 14:25

2个答案 按时间排序 按投票排序

0 0

亲,先看看Enum的本质吧~

Compiled from "LogActionCode.java"
public final class LogActionCode extends java.lang.Enum{
    public static final LogActionCode ADMIN_LOGIN;
    public static final LogActionCode ADMIN_CREATE_USER;
    public static final LogActionCode ADMIN_EDIT_USER;
    public static final LogActionCode ADMIN_DELETE_USER;
    public static final LogActionCode ADMIN_CREATE_RATE;
    public static final LogActionCode ADMIN_EDIT_RATE;
    public static final LogActionCode ADMIN_DELETE_RATE;
    public static final LogActionCode ADMIN_CREATE_INTEGRAL;
    public static final LogActionCode ADMIN_EDIT_INTEGRAL;
    public static final LogActionCode ADMIN_DELETE_INTEGRAL;
    public static final LogActionCode ADMIN_CREATE_EXPENSE;
    public static final LogActionCode ADMIN_EDIT_EXPENSE;
    public static final LogActionCode ADMIN_DELETE_EXPENSE;
    public static final LogActionCode USER_LOGIN;

    static {};
    public static LogActionCode valueOf(long);
    public static java.lang.String getActionMsg(java.lang.Long);
    public java.lang.Long getCode();
    public java.lang.String getMsg();

    public static LogActionCode[] values();
    public static LogActionCode valueOf(java.lang.String);
}


我们一般在某个对象具有多种类型时,使用到Enum.其中的任意类型都是该对象的实例。所有类型对象实例将在static块中初始化,而无需外部实例化该对象(外部实例化无任何意义)。当然也就不需要public构造方法了。当然属性也是属于每一个类型实例的,你定义成public也可以,不过根据对象封装的思想,最好不公开对象属性。构造器你不写,在编译的时候会添加一个默认构造器到class中。

2012年4月20日 10:18
0 0

枚举的构造器只能使用private访问控制器,如果省略了其构造器的访问修饰符,则默认使用private修饰,如果强制指定访问控制符,则只能制定private,这是规定,没有什么好纠结的

2012年4月20日 08:31

相关推荐

    Java私有构造器使用方法示例

    私有构造器是 Java 编程语言中的一种特殊的构造器,它可以控制访问权限,防止类被不必要的实例化和子类化,提高代码的安全性和可维护性。通过私有构造器,可以实现 Singleton 属性,强化不可实例化的能力,提高代码...

    java枚举类型enum的使用

    这里为每个枚举元素添加了一个名为 `nCode` 的私有成员变量,并通过构造器初始化。通过重写 `toString()` 方法,可以让每个枚举元素在打印时显示其对应的 `nCode` 值。 #### 三、枚举类型的内置方法 枚举类型提供...

    java枚举类用法

    通过上述介绍,我们了解到Java枚举类的多种用法,包括声明、初始化、方法定义、构造器、转换为集合、遍历、比较、在switch语句中的应用以及序列化等。枚举类不仅提高了代码的可读性和安全性,还简化了常量管理,使得...

    EnumTest--构造顺序:父类、类成员变量、子类.zip

    在Java中,枚举的构造器默认是私有的,不能从外部直接实例化。枚举实例是在枚举声明中通过列举的方式创建的,例如`public enum Color { RED, GREEN, BLUE }`。这里的RED、GREEN、BLUE就是枚举的实例,它们会自动调用...

    枚举类型的说明 enum

    枚举类型是一种特殊的类,实际上 enum 声明定义的类型就是一个类,这些类都是类库中 Enum 类的子类(java.lang.Enum)。它们继承了这个 Enum 中的许多有用的方法。 1、枚举类的特征 枚举类是特殊的类,其枚举值...

    JAVA类的特性资料

    9. **枚举类型(enum)**:Java中的枚举是一种特殊的类,用于定义一组固定的常量。枚举类型提供了更多的安全性和可读性,相比使用int常量或字符串常量更佳。 10. **异常处理**:Java通过try-catch-finally语句块...

    java中enum的用法

    枚举构造器是私有的,确保外部无法创建新的实例,只能通过枚举定义中的常量来访问。 10. **枚举常量的序列化** 默认情况下,枚举是可序列化的。但是,如果不需要枚举实例被序列化,可以通过在枚举类上添加`@java....

    详解Java的Enum的使用与分析

    枚举类的构造器是私有的,不允许外部直接创建实例。通常,枚举值在编译时就已经初始化,通过`invokespecial`指令调用父类`Enum`的构造器完成实例化。 4. **枚举的方法**: - `values()`:返回枚举类的所有值的...

    简单总结java枚举类型

    枚举在Java中被引入为一个完整的类型,不同于C++中的枚举,这使得Java枚举更加强大且易于使用。以下是关于Java枚举类型的详细解释和相关知识点: 1. 定义枚举: 在Java中,枚举通过关键字`enum`来定义。例如,创建...

    学习笔记 java\CoreJava笔记\CoreJava_day10

    枚举的构造器必须是私有的,确保枚举实例只能通过枚举定义的常量来创建。枚举中的每个元素都有一个静态的`values()`方法,可以返回所有枚举值的数组。由于枚举是类,所以它可以拥有属性、方法和构造器,同时,枚举...

    达内JAVA TTS5.0 PDF----JAVA面向对象

    6. 构造器(Constructor):构造器是一种特殊的方法,用于初始化新创建的对象。它与类名相同,没有返回类型,通常在创建对象时调用。 7. 接口(Interface):接口是Java中的纯抽象类,它只包含常量和抽象方法的声明...

    java面向对象程序设计——董小园著

    以上只是Java面向对象编程的一些基本概念,实际编程中还包括接口之间的继承、访问控制、构造器链、访问者模式、适配器模式等许多高级主题。董小园的书很可能详细阐述了这些内容,并通过实例和练习帮助读者巩固理解。...

    effective-java.pdf

    Java 8之后,接口可以包含静态方法,不过实现细节仍然可能需要放在包私有类中。 3. 静态工厂方法的命名和设计 良好的命名对于静态工厂方法非常重要。它们通常有描述性的名称,如valueOf、of、getInstance、new...

    Java中控制创建对象的个数

    通过将类的构造器声明为私有,外部类无法直接实例化它。例如: ```java public class Singleton { private static Singleton instance; private Singleton() {} public static Singleton getInstance() { if ...

    Java面试枚举从使用到原理

    但是可以在枚举定义中包含私有构造器,用于初始化枚举常量。 二、枚举的优势 1. 安全性:枚举类型保证了类型安全,不允许创建未声明的枚举实例,有效防止了硬编码错误。 2. 内置功能:枚举提供了许多内置的比较和...

    Java(OOP)练习及作业

    在练习中,你可能会遇到如何使用默认构造器、参数化构造器以及构造器链的问题。 6. **访问控制和权限修饰符**:理解public、private、protected以及默认(包访问)的权限范围是重要的。练习可能要求设计类和方法,...

    Java面向对象编程课件.zip

    每个类都至少有一个构造器,如果没有显式声明,编译器会自动提供一个默认构造器。程序员可以自定义构造器以满足初始化特定需求。 6. 抽象类与接口: 抽象类是不能被实例化的类,它用于定义共同的属性和行为,供...

    corejava_面试题

    是的,一个".java"源文件中可以包含多个类,但只能有一个公共类(public class),并且该公共类的名称必须与文件名相同。其他非公共类的数量不限制,但它们不会被公开访问。 2. Java有没有goto? Java语言中不包含...

    java面向对象程序设计实例

    Java类可以有一个或多个构造器,它们的名字必须与类名相同,没有返回类型。例如,`Person`类可以有带参数和无参数的构造器。 5. 抽象类和接口:抽象类是不能实例化的类,通常包含抽象方法(没有具体实现的方法)。...

    4封装_Java.pdf

    在Java编程语言中,封装是面向对象编程的三大特性之一,它主要涉及到类、对象、访问权限控制以及构造器等多个核心概念。以下是对这些知识点的详细解释: 1. **类(Class)**:类是面向对象编程的基础,它是描述具有...

Global site tag (gtag.js) - Google Analytics