`

final的用法

阅读更多
关于final的用法,在面试的时候,跟面试官产生了冲突,我一贯的是不会把自己的想法强加给别人,所以我觉得相互的讨论是必要的,单方的肯定自己的结论,是对方的不尊重。反过来,错误的想法强加于别人身上更是不太成熟的表现。

我写了下面的类,类的后三个方法是编译不通过的,论证
1.final字段不可更改值
2.基本类型的参数被final后也不可更改其值
3.final加于方法上后,方法不能orverride,重写。
4.final加于类上不可以继承,未写代码论证。

而争论就在changeState方法上,final修饰的是一个对象,
结论:
对象内部字段的值是可以改变,但传人的对象的引用是不可改变的,这样确保传递的引用始终指向相同的对象,而不是其他的对象,但其内部值(字段)是一定可以更改的。


public class TestFinal extends FinalParameter {

	private final String testString = "";

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		FinalParameter object = new FinalParameter();

		(new TestFinal()).changeState(object);

	}

	public FinalParameter changeState(final FinalParameter finalParameter) {
		finalParameter.setState("I'm changed");

		return finalParameter;
	}

	public FinalParameter changeObject(final FinalParameter finalParameter) {

		finalParameter = new FinalParameter();
	}

	public String overload(String a) {
		return "over";
	}

	public void testInt(final int arg) {
		arg = 5;
		testString = "";
	}

	public String overload() {
		return "";
	}

}

分享到:
评论

相关推荐

    Java中static、this、super、final用法

    ### Java中static、this、super、final用法详解 #### 一、static关键字 `static`关键字在Java中主要用于声明类成员(变量或方法)为静态成员。这意味着这些成员不属于任何特定的对象实例,而是属于整个类本身。因此...

    关于Final的用法

    - **代码安全性**:使用`final`可以避免无意中改变变量值或方法行为,增强代码的安全性和稳定性。 - **设计模式支持**:在某些设计模式中,如单例模式,`final`关键字是实现的关键之一,确保只有一个实例存在。 ###...

    Java中static、this、super、final用法.docx

    "Java 中 static、this、super、final 用法详解" Java 中的 static 关键字是用于定义静态变量和静态方法的。静态变量和静态方法是属于类的,而不是属于类的对象的。它们可以被所有类的对象共享。 在 Java 中,...

    final用法详解

    ### Final用法详解 #### 一、Final Constants(最终常量) 最终常量是指那些一旦被定义就不能再改变其值的变量。它们通常用于表示不会发生变化的值,比如圆周率π。在Java中,使用`final`关键字来声明一个最终常量...

    final用法........

    - 当不希望子类改变父类的某些特定行为时,可以使用 `final` 方法。 3. **final 类**: - 当一个类被声明为 `final`,意味着这个类不能被其他类继承。这有助于防止意外的扩展,特别是在实现不可变对象或者单例...

    Java中static、this、super、final用法简谈

    对于方法,如果一个类的方法声明为`final`,则子类不能重写这个方法。同样,如果一个类声明为`final`,则不能有任何子类。 - 最终变量:一旦赋值,就不能更改。这可以用于常量,如`Math.PI`。 - 最终方法:不允许...

    Java开发中static.this.super.final用法

    - **常量与不可变性**:`final`关键字可以用于声明常量(变量一旦赋值就不能改变)、不可变对象(如`final`类)和不可重写的方法(`final`方法)。在示例中,`System`类中的`out`字段被声明为`final`和`static`,这...

    Java中static、this、super、final用法.doc

    4. **final**: `final`关键字有多种用法。它可以修饰类、方法和变量,分别表示: - **final 类**:表示该类不能被继承。 - **final 方法**:表示该方法不能被子类重写。 - **final 变量**:表示该变量一旦赋值就...

    JAVA\Java开发中static、this、super和final用法

    - 示例中同样未展示`super`的使用,但常见的使用场景如`super.someMethod()`或`super(parameters)`来调用父类的方法或构造器。 4. **final关键字**: - `final`用于声明常量(不可变的变量)、不可重写的方法或不...

    validation-api-1.1.0.Final-API文档-中文版.zip

    赠送jar包:validation-api-1.1.0.Final.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    java---- 封装,接口,继承,覆盖,构造过程,多态,static、this、super、final用法

    - `final` 方法不能被覆盖。 - **示例:** ```java public class MyClass { public final int CONSTANT = 100; // 常量 public final void display() { System.out.println("This is a final method."); } ...

    GB28181 mss-1.4.0.FINAL-apache-tomcat-6.0.29 和使用文档链接

    mss-1.4.0.FINAL-apache-tomcat-6.0.29 此为28181新版调测软件,按照 连接说明(在压缩包里面)来安装解包就可以调试了

    final 关键字用法

    java程序设计中,final 关键字用法,通过代码演示java程序设计中,final 关键字用法,

    final和static用法详解JAVA

    使用 final 方法的原因有二:第一,把方法锁定,防止任何继承类修改它的意义和实现;第二、高效。编译器在遇到调用 final 方法时候会转入内嵌机制,大大提高执行效率。 3. final 变量(常量) final 变量表示常量...

    java关键字final使用方法详解

    在深入探讨`final`的使用方法之前,我们需要理解为什么在编程中会需要不可变性。 不可变性在软件设计中起着至关重要的作用,因为它有助于提高代码的可预测性、安全性和并发性能。当一个对象是不可变的,我们知道...

Global site tag (gtag.js) - Google Analytics