Final关键字
final可以修饰类、属性、方法、局部变量。
- 不希望类被继承时使用
- 不希望父类的某个方法被子类覆盖或重写
final的基本操作
public class Final01 {
public static void main(String[] args) {
}
}
final class A {
} // 不允许被继承的类
//class B extends A{}
class C {
public final void hi() {
}
}
class D extends C {
// @Override
// public void hi() {
// super.hi();
// }
//}
}
class E {
public final double PI_NUMBER = 3.14;
}
class F {
public void say() {
final double NUM = 10;
// num = 9; 不能修改被final修饰的属性
System.out.println(NUM);
}
}
final修饰的属性又叫做常量,一般用大写字母下划线连接来命名。
final修饰的属性必须赋初值,并且往后不能在修改。赋值的位置:
- 定义时(public final int A =10)。
- 在构造器中。
- 在代码块中。
public class Final01 {
public static void main(String[] args) {
}
}
class A{
public final double MAX_NUMBER=99;
public final double MAX_NUMBER2;
public final double MAX_NUMBER3;
public A(){
MAX_NUMBER2=99;
}
{
MAX_NUMBER3=99;
}
}
如果类不是final类,方法是final方法则,类可以继承,但是方法不能重写。
public class Final01 {
public static void main(String[] args) {
C c = new C();
c.say();
//方法不是不能重写
}
}
class B {
public final void say() {
System.out.println("这是say方法");
}
}
class C extends B{ }
如果一个类是final类其中的方法就不用加final了。final不能修饰构造方法。final和方法一起用效率高。
public class Final01 {
public static void main(String[] args) {
System.out.println(A.num);
}
}
class A{
public static final int num=11;
static {
System.out.println("A类的静态代码块");
}
}
包装类:Integer、Double、Float、Boolean、String等都是final类。
本文作者:Dr丶云幕
本文链接:https://www.cnblogs.com/vayenge/p/18077148
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY