Java 面向对象 final关键字
2022/1/27 20:06:39
本文主要是介绍Java 面向对象 final关键字,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
final
关键字可以用来修饰类
,属性
,方法
,局部变量
,形参
final
修饰类
final class Person { }
final
修饰的类,不能被继承,可以实例化
public class Test { public static void main(String[] args) { } } final class Person { } class Student extends Person{ }
上面的代码,会运行异常:java: 无法从最终Person进行继承
final
修饰方法
,不能修饰构造方法
class Person { final public String work() { return "工作"; } }
final
修饰的方法,无法被子类重写(override),可以被继承
class Person { final public String work() { return "工作"; } } class Student extends Person{ public String work() { return "学习"; } }
上面的代码,会运行异常:java: Student中的work()无法覆盖Person中的work() 被覆盖的方法为final
final
修饰属性
final
修饰的属性又称为常量,一般用XX_XX_XX来进行命名
-
final
修饰的普通属性在定义时,必须赋予初始值-
直接赋值
class Person { final public double PI = 3.14; }
-
构造器
class Person { final public double PI; public Person(double pi) { this.PI = pi; } }
-
代码块
class Person { final public double PI; { PI = 3.14; } }
-
-
final
修饰的静态属性在定义时,必须赋予初始值-
直接赋值
class Person { final static public double PI = 3.14; }
-
静态代码块
class Person { final static public double PI; static { PI = 3.14; } }
-
-
final
修饰的基本类型变量,变量不可改变 -
final
修饰的引用类型变量,引用本身不可改变,被引用的值可以被修改
class Student{ private String name; public Student(String name) { this.name = name; } public void setName(String name) { this.name = name; } @Override public String toString() { return this.name; } } class Person { final Student student = new Student("smile"); public void run() { System.out.println("初始值" + student); student.setName("易文杰"); System.out.println("修改后的值" + student); } }
上面代码,会输出初始值smile 修改后的值易文杰
表示:引用类型变量,引用本身不可改变,被引用的值可以被修改
class Person { final public int age = 20; Person(int age) { this.age = age; } }
上面代码,会运行异常Cannot assign a value to final variable 'age'
final
修饰内部类
class Person { public void run() { final int AGE = 20; final String NAME; NAME = "smile"; } }
final
修饰形参
class Person { public String work(final String work) { work = "打工"; return work; } }
上面的代码会报错:Cannot assign a value to final variable 'work'
final
和static
一起搭配使用。
public class Test { public static void main(String[] args) { System.out.println(Status.SUCCESS); } } class Status { final static public int SUCCESS = 200; static { System.out.println("类被加载"); } }
上面的代码中,当我们直接使用final 修饰的静态属性的时候,不会导致类被加载。输出如下:200
这篇关于Java 面向对象 final关键字的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-23线下车企门店如何实现线上线下融合?
- 2024-12-23鸿蒙Next ArkTS编程规范总结
- 2024-12-23物流团队冬至高效运转,哪款办公软件可助力风险评估?
- 2024-12-23优化库存,提升效率:医药企业如何借助看板软件实现仓库智能化
- 2024-12-23项目管理零负担!轻量化看板工具如何助力团队协作
- 2024-12-23电商活动复盘,为何是团队成长的核心环节?
- 2024-12-23鸿蒙Next ArkTS高性能编程实战
- 2024-12-23数据驱动:电商复盘从基础到进阶!
- 2024-12-23从数据到客户:跨境电商如何通过销售跟踪工具提升营销精准度?
- 2024-12-23汽车4S店运营效率提升的核心工具