java - 如何在类中制作静态变量,只能由类而不是它的实例修改?
问题描述
如何创建只能由类而不是它的实例修改的类变量
class BullDog{
String name;
static String breed = "BullDog";
public BullDog(String name){
this.name = name;
}
}
public class MainClass{
public static void main(String [] args){
Dog Mydog = new BullDog("Fluffy");
Mydog.breed = "Shepherd"; // Should not be modified
System.out.Println(Dog.breed);
}
}
实际输出:
Shepherd
期望的输出:
BullDog
解决方案
使字段final
保持不变。并且static final
处于班级水平。
public class BullDog {
public String name;
public static final String breed = "BullDog";
public BullDog(String name){
this.name = name;
}
}
问题是继承是不可能的。贵宾犬需要自己的静态品种,你不能让狗提供品种
public abstract class Dog {
public String name;
public Dog(String name){
this.name = name;
}
public abstract String getBreed();
}
public class BullDog extends Dog {
public BullDog(String name){
super(name);
}
@Override
public String getBreed() {
return "Bulldog";
}
}
public class Poodle extends Dog {
public Poodle(String name){
super(name);
}
@Override
public String getBreed() {
return "Wolf";
}
}
List<Dog> dogs = Arrays.asList(new BullDog("fluffy"), new Poodle("Herman"));
推荐阅读
- c++ - 将多资源添加到 c++ 并将它们提取到临时文件夹以使用
- java - 为什么链接列表合并功能在 Java 中不起作用?
- vb.net - 如何从另一个类中的另一个函数访问新的实例化类方法?
- react-native - 在按钮单击时重新渲染本机视图
- angular - 过滤器和列表排序的问题Angular
- php - Wordpress 操作计划程序未运行
- rest - 在 Dynatrace 中分析性能
- flutter - 如何从我给定了一些值的类构造函数中访问数据。到另一个变量
- django - Django View 导致 Psycopg2 光标存在/不存在错误
- python - Django 应用程序在部署到 Heroku 时崩溃 - 错误 H10