当前位置: 首页 > news >正文

Java的final关键字

基本介绍:

final(译最后的,最终的) 可以修饰类,属性,方法和局部变量

在某些情况下,程序员可能有以下需求,就会用到final:

1)当不希望类被继承时,可以用final修饰

2)当不希望父类某个方法被子类覆盖/重写时,可以用final关键字修饰

3)当不希望类的某个属性的值被修改,可以用final修饰

4)当不希望某个局部变量被修改,可以用final修饰.

package com.final_;public class Final01 {public static void main(String[] args) {E e = new E();e.TAX_RAT = 0.09;}
}//如果不希望A被其他类继承,用final修饰即可
//  final class A{
//  }
class A{
}
class B extends A{
}//当不希望父类某个方法被子类覆盖/重写时,可以用final关键字修饰
class C{public void hi(){//如果要求不允许子类重写,可以写final public void hi(){}}
}
class D extends C{@Overridepublic void hi() {System.out.println("重写了C类的hi()");}
}//当不希望类的某个属性的值被修改,可以用final修饰
class E {public double TAX_RAT = 0.08;//final public double TAX_RAT = 0.08;
}//当不希望某个局部变量被修改,可以用final修饰.
class F{public void cry(){double NUM = 0.01;NUM = 0.02;//final double num = 0.01;//这时,num也被称为局部常量(不允许变化的值一般为大写)}
}

final使用注意事项和细节讨论:

1)final修饰的属性又叫常量,一般用 xx_xx_xx来命名 (字母一般大写,如TAX_RATE)

2)final修饰的属性在定义时,必须赋初值,并且以后不能再修改,赋值可以在如下位置之一(选择一个位置赋初值即可)

        1.定义时,如public final double TAX_RATE = 0.08;(final写前面也行)

        2.在构造器中

        3.在代码块中

3)如果final修饰时的属性是静态的,则初始化的位置只能是

        1.定义时

        2.在静态代码块 不能在构造器中赋值

4)final类不能继承,但是可以实例化对象

5)如果类不是final类,但是含有final方法,则该方法虽然不能重写,但是可以被继承

6)一般来说,如果一个类已经是final类了,就没有必要再将方法修饰成final方法

7)final不能修饰构造方法(即构造器)

8)final和static往往搭配使用,效率更高,底层编译器做了优化处理

9)包装类(Integer,double,float,boolean等都是final),String也是final类        

package com.final_;public class FinalDetail01 {public static void main(String[] args) {CC cc = new DD();cc.cal();System.out.println(EE.num);}
}class AA{/*final修饰的属性在定义时,必须赋初值,并且以后不能再修改,赋值可以在如下位置之一(选择一个位置赋初值即可)1.定义时,如public final double TAX_RATE = 0.08;(final写前面也行)2.在构造器中3.在代码块中*/public final double TAX_RATE = 0.08;//定义时赋值public final double TAX_RATE2;//定义时未赋值则必须在下面构造器或代码块中中赋值public final double TAX_RATE3;public AA() {TAX_RATE2 = 1.1;}{TAX_RATE3 = 2.2;}
}class BB{/*如果final修饰时的属性是静态的,则初始化的位置只能是1.定义时2.在静态代码块 不能在构造器中赋值*/public static final double TAX_RATE = 99.9;//定义时赋值public static final double TAX_RATE2;//在静态代码块中赋值 不能在构造器中赋值static{TAX_RATE2 = 99;}//构造器在创建对象后才被调用,而静态成员在类加载时就被初始化,所以无法写入构造器中
}class CC{//如果类不是final类,但是含有final方法,则该方法虽然不能重写,但是可以被继承public final void cal(){System.out.println("cal()方法");}
}
class DD extends CC{//不能重写cal(),但是可以继承这个方法//在main()中创建DD对象后调用
}class EE{//final和static往往搭配使用,效率更高,底层编译器做了优化处理public static final int num = 100;static{System.out.println("BBB静态代码块被执行");//不会输出}//当final和static同时被使用,系统会只加载public static final int num = 100;//也就是说,可以直接调用静态属性而不会加载下面的静态代码块,这就是底层编译器的优化
}
http://www.dtcms.com/a/517733.html

相关文章:

  • 网页模板快速建站工具个人网页设计作品简笔画
  • 建设工程质量监督站网站去哪个网站做吃播
  • 小程序推广有哪些好的方法网站内容优化的准则
  • 淘宝首页网站怎么做分红网站建设
  • 餐厅网站建设网站开发用户注册
  • 基于SpringBoot2+Vue2的游戏论坛管理系统
  • 北京便宜网站建设app制作app定制开发价格
  • 广州学网站建设软件开发文档范例
  • ELK运维之路(Logstash-插件)
  • 网站建设分几模块资讯门户类网站模板
  • 深圳宝安网站建设500元起价个人工作室税收优惠政策
  • 建设英语网站目的企业建设网站
  • 网站建设与网页设计专业做导购网站赚钱吗
  • 网站的ftp公司设计网站需要包含什么资料
  • 百度站长工具网站提交以下哪个是专业的网页制作软件
  • 网站建设参考网站的说明书婚庆策划公司加盟
  • 贵阳专业做网站广告中国第一
  • 漫画网站建设教程视频亚马逊雨林是怎么形成的
  • 成都极客联盟网站建设公司做一个软件需要哪些步骤
  • PostgreSQL 19新特性之随机日期和时间
  • 制作个人网站在线国内免费crm
  • 做网站电话销售的话术吴江微信网站制作
  • 一级做a爱网站免费沧县网站制作价格
  • 什么是网站静态页面做期货看那个网站比较专业
  • RSS 参考手册
  • 江苏华东建设基础工程有限公司网站成都旅游景点排名前十
  • 成都最好的seo外包网站推广优化排名seo
  • 网站语言编程客户管理系统哪找
  • 海口市住房和城乡建设局网站怎样做1个网站
  • 一般网站后台都是哪里做网页模板下载工具