你能帮我解决一下如何创建一个不可继承的类,并且在行为中应该是静态的(意味着我们不应该创建它的实例)。我需要这个类来存储常量值。感谢。
答案 0 :(得分:8)
public final class MyClass {
private MyClass() { }
}
final
关键字使其不可继承,并且使构造函数private
有助于阻止它被实例化。
答案 1 :(得分:6)
您可以使用final
关键字来继承课程。
但我建议你使用Enums
。 Enums
不能被继承,每个常量值只存在一个实例。您还可以使用enums
完成更多操作。
public enum DaysOfweek
{
SUNDAY,MONDAY.....
}
您可以在此处阅读有关枚举的更多信息Enum Types
答案 2 :(得分:4)
为什么不使用具有几个静态和最终变量的接口?
答案 3 :(得分:3)
final
类,因为它们无法继承.. interface
,它们非常适合存储Constants
。但是你不能让他们两个在一起(因为interface
不能implemented
没有意义).. <登记/>
所以,最好的是你可以在一个类中混合两者的属性。你可以有final class
个public 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,则始终返回相同的实例。
由于