java中final关键字的说明

来源:互联网 发布:防火女捏脸数据 编辑:程序博客网 时间:2024/06/06 23:53

关于final关键字的理论说明:


1.final关键字可以用于成员变量、本地变量、方法以及类。

2.final成员变量必须在声明的时候初始化或者在构造方法中初始化

3.不能够对final变量再次赋值。

4.成员变量必须在声明时赋值。

5.final方法不能被重写,但可以被重载

6.final类不能被继承。

7.final关键字不同于finally关键字,后者用于异常处理

8.final和abstract这两个关键字是反相关的,不可能同时修饰类


在看代码理解的基础上必须首先理解以下内容

关于初始化,可以理解为赋值=初始化

String name;  //没有被初始化

String name="daobin"; //已经初始化了

关于成员变量与局部变量

注意:成员变量和局部变量同名时,局部变量的赋值具有更高的优先级,优先取局部变量的值

public class Final{

String name; //成员变量

void f(){

String sex; //局部变量(本地变量)

}

}


final修饰的变量

public class Final {String _def="默认修饰"; final String _final="最终修饰符"; // 初始化final修饰的变量/* * final修饰的成员变量必须初始化 *///报错 final String name; Final(String def,String fin){ //构造方法_def=def;//报错 _final=fin; final修饰的变量无法再次赋值fin=new String("初始化没有final修饰的fin变量");System.out.println(fin);}/* * final局部变量可以在构造方法中初始化 */void fina(){final String sex;sex=new String("萝莉"); //初始化final修饰的变量System.out.println(sex);}void ff(final String a,final String b){ //在一般方法中定义final修饰的变量System.out.println(a+b);}public static void main(String[] args){Final f=new Final("默认", "最终"); //给构造函数的变量赋值f._def="初始化没有final修饰的_del变量"; //调用构造函数的变量并赋值f.fina(); //调用一般方法f.ff("dao","bin"); //给一般方法final修饰的局部变量赋值System.out.println(f._def); /* * 对象f无法初始化final修饰的变量 *///报错  f._final="无法初始化变量";}}
运行结果:

初始化没有final修饰的fin变量
萝莉 //初始化了final修饰的变量
daobin //初始化了final修饰的变量
初始化没有final修饰的_del变量


final修饰的方法

public class FinalF {/* * final修饰的方法可以实现方法重载 */final void F(final String a,final String b){System.out.println(a+b);}final void F(int a,int b){System.out.println(a+b);}/* * final不能修饰构造方法 *///报错 final FinalF(){}final void info(){System.out.println("声明final修饰的方法");}/* * final修饰的方法不能进行方法重写 */class Info extends FinalF{ //子类继承父类final void info(){ //报错System.out.println("不能实现方法重写");}}public static void main(String[] args){FinalF f=new FinalF();f.F("dao", "bin");f.F(1, 2);}}


final修饰的类

public final class FinalC {/* * final修饰的类不能被继承 * final修饰的方法不能被重写 */final void f(){System.out.println("final修饰的方法");}class Inner extends FinalC{ //报错void f(){ //报错System.out.println("无法继承final修饰的父类");}}/* * final和abstract不能同时修饰类 */final abstract class abs{ //报错}}



最后,仔细观察,认真学习

原创粉丝点击