如何在java中创建一个不可继承和静态的类?

时间:2012-10-01 05:15:40

标签: java

你能帮我解决一下如何创建一个不可继承的类,并且在行为中应该是静态的(意味着我们不应该创建它的实例)。我需要这个类来存储常量值。感谢。

8 个答案:

答案 0 :(得分:8)

public final class MyClass { 
    private MyClass() { }
}

final关键字使其不可继承,并且使构造函数private有助于阻止它被实例化。

答案 1 :(得分:6)

您可以使用final关键字来继承课程。 但我建议你使用EnumsEnums不能被继承,每个常量值只存在一个实例。您还可以使用enums完成更多操作。

public enum DaysOfweek
{
    SUNDAY,MONDAY.....
}

您可以在此处阅读有关枚举的更多信息Enum Types

答案 2 :(得分:4)

为什么不使用具有几个静态和最终变量的接口?

答案 3 :(得分:3)

  • 对于第一种情况,您可以使用final类,因为它们无法继承..
  • 对于第二种情况,您可以使用interface,它们非常适合存储Constants

但是你不能让他们两个在一起(因为interface不能implemented没有意义).. <登记/> 所以,最好的是你可以在一个类中混合两者的属性。你可以有final classpublic static final个变量,因为这是在接口中创建变量constant的原因,服务于constants ..

的目的
public final class A {
    public static final int YOUR_CONST = 5;

}

如果您不想创建此类的实例,则可以在其中添加private 0-arg constructor ..

public final class A {
    public static final int YOUR_CONST = 5; 

    private A() {}

}

答案 4 :(得分:2)

将其声明为final,不允许其他类扩展它,并使其构造函数为private,因此没有其他人(除了您自己的类)将能够实例化它:

public final class MyClass {

    private MyClass() {
        // Private so noone else can instantiate this
    }

}

答案 5 :(得分:2)

以下是包含常量值的类的示例:

public final class Trial // it is the FINAL
{
    private static final int CONSTANT_VALUE = 666;

    private Trial() // it is PRIVATE instead of PUBLIC
    {
    }

    public static int getConstantValue()
    {
       return CONSTANT_VALUE;
    }
}

以下是如何测试上述类的示例:

public class Bully //extends Trial ////"extends" WILL NOT COMPILE
{
    public static void main(String[] args)
    {
        //Trial trial = new Trial(); ////"new Trial()" WILL NOT COMPILE

        // The only thing can be done is getting a constant value from "Trial"
        int acquiredValue = Trial.getConstantValue();
        System.out.println(acquiredValue);
    }
}

希望有帮助:))

答案 6 :(得分:1)

public final class MyClass {
    public static string MY_STRING;
    public static int MY_INT;

    private MyClass() {}
}

答案 7 :(得分:1)

final:创建一个类final,这意味着这个类不能继承更多。 static:如果所有方法都是静态的,则不需要创建此类的实例。而且行为应该是静态的。

单例模式:如果所有方法都不是静态的,并且您不想创建多个实例,则可以将构造函数设为私有,并在类中保留一个类对象变量。如果它为null,则创建一次,如果不为null,则始终返回相同的实例。

由于