我正在Android上进行继承领域的培训,我想知道为什么name和color变量的定义来自最终的关键字--当我移除这个关键字时,没有任何用处。而且当我得到这个关键字时,没有错误或意外--请告诉我使用final的原因是什么
mainactivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView txtAnimal = (TextView) findViewById(R.id.txtAnimal);
TextView txtCat = (TextView) findViewById(R.id.txtCat);
Animal animal1 = new Animal("tiger", "orange", 60, 80);
Cat cat1 = new Cat("persian", "brown", 40, 25, 4, true);
txtAnimal.setText(animal1.toString());
txtCat.setText(cat1.toString());
}
animal.java
public class Animal extends Object{
private final String name;
private final String color;
private int amountOfSpeed;
private int amountOfPower;
public Animal(String name, String color, int amountOfSpeed, int amountOfPower){
// this. for same name
this.name = name;
this.color = color;
this.amountOfSpeed = amountOfSpeed;
this.amountOfPower = amountOfPower;
}
// we can use setter because variable (name-color) are defined final
public String getName(){
return name;
}
public String getColor(){
return color;
}
public void setAmountOfSpeed(int amountOfSpeed){
this.amountOfSpeed = amountOfSpeed;
}
public int getAmountOfSpeed(){
return amountOfSpeed;
}
public void setAmountOfPower(int amountOfPower){
this.amountOfPower = amountOfPower;
}
public int getAmountOfPower(){
return amountOfPower;
}
public int evaluateAnimalValue(){
int result = amountOfSpeed *amountOfPower;
return result;
}
@Override
public String toString() {
return String.format("%s: %s %s: %s %s: %d %s: %d",
"Name", name,
"Color", color,
"Speed", amountOfSpeed,
"Power", amountOfPower);
}
}
cat.java
private final int numberOfLegs;
private boolean canHuntOtherAnimal;
public Cat(String name, String color, int amountOfSpeed, int amountOfPower, int numberOfLegs, boolean canHuntOtherAnimal){
super(name, color, amountOfSpeed, amountOfPower);
this.numberOfLegs = numberOfLegs;
this.canHuntOtherAnimal = canHuntOtherAnimal;
}
public int getNumberOfLegs() {
return numberOfLegs;
}
public boolean getCanHuntOtherAnimal() {
return canHuntOtherAnimal;
}
public void setCanHuntOtherAnimal(boolean canHuntOtherAnimal) {
this.canHuntOtherAnimal = canHuntOtherAnimal;
}
@Override
public String toString() {
return super.toString() + String.format(" %s: %d %s: %b",
"Legs", numberOfLegs,
"Fight", canHuntOtherAnimal) + " Animal Value: " + evaluateAnimalValue();
}
}
变量的final关键字表示不能修改该值。变量必须设置一次,然后不能更改。
变量在声明时初始化:
private final String name = "Rover";
...或者在构造函数中,就像在上面的代码中一样。
在上面的代码示例中,setName方法不能使用final名称。但是,您可以调用setAmountOfSpeed,因为amountOfSpeed不是final。
final关键字常用于表示常量:
public final float PI = 3.14159;
下面是一篇关于final关键字的其他用法的文章。
https://www.geeksforgeeks.org/final-keyword-Java/
本文向大家介绍详解Java中的final关键字的使用,包括了详解Java中的final关键字的使用的使用技巧和注意事项,需要的朋友参考一下 final含义 final是Java中的一个保留关键字,可以声明成员变量、方法和类。一旦你将引用声明为final类型,你将不能再改变这个引用了。编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译错误。 final变量 凡是对成员变量或者本地变量(
问题内容: 我找不到与Python 等效的Java文档,有这样的事情吗? 我正在创建一个对象的快照(用于在任何失败的情况下用于还原);一旦分配了此备份变量,就不应对其进行修改-Python中类似final的功能将非常有用。 问题答案: 在Java中拥有一个变量基本上意味着您一旦分配了变量,就不能重新分配该变量以指向另一个对象。实际上,这并不意味着不能修改该对象。例如,以下Java代码可以很好地运行
本文向大家介绍详解Java编程中static关键字和final关键字的使用,包括了详解Java编程中static关键字和final关键字的使用的使用技巧和注意事项,需要的朋友参考一下 Java static关键字以及Java静态变量和静态方法 static 修饰符能够与变量、方法一起使用,表示是“静态”的。 静态变量和静态方法能够通过类名来访问,不需要创建一个类的对象来访问该类的静态成员,所以st
本文向大家介绍Java中final变量使用总结,包括了Java中final变量使用总结的使用技巧和注意事项,需要的朋友参考一下 final关键字可用于变量声明,一旦该变量被设定,就不可以再改变该变量的值。 通常final定义的变量为常量。如: 当在程序中使用PI这个常量时,它的值就是3.14,如在程序中再次对定义为final的常量赋值,编译器将不能接受; final关键字定义的变量必须在声明时对其
问题内容: 关键字如何使变量不可变?维基百科说没有。 问题答案: 在Java中,术语 final 是指引用,而不 可变 是指对象。将修饰符分配给引用意味着它不能更改为指向另一个对象,但是如果对象是可变的,则可以对其进行修改。 例如: 就像Wikipedia文章中提到的那样,如果您来自C ++,则必须分离出into 和不可变的概念。
本文向大家介绍浅谈Java中的final关键字与C#中的const, readonly关键字,包括了浅谈Java中的final关键字与C#中的const, readonly关键字的使用技巧和注意事项,需要的朋友参考一下 在编程语言中都有某种方式,告知编译器一块数据是恒定不变的。有两个需求 1. 一个永不改变的编译器常量 2. 一个在运行时被初始化的值,而这个值不会被改变 在Java中,使用fina