当前位置: 首页 > 知识库问答 >
问题:

在变量Java中使用关键字final的原因[副本]

马边浩
2023-03-14

我正在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();
    }
}

共有1个答案

勾通
2023-03-14

变量的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