美文网首页
final关键字

final关键字

作者: Lutous | 来源:发表于2019-07-08 23:59 被阅读0次

    final关键字代表最终、不可变的:
    常见四种用法:
    1:修饰一个类
    2:修饰一个方法
    3:修饰一个局部变量
    4:修饰一个成员变量

    修饰一个类

    package cn.dailylearn.Final;
    
    /*
     * final关键字用来修饰一个类,格式:
     * public final class 类名称{}
     * 含义:这个类不能有任何的子类
     * */
    public final class ClassFinal {
    }
    
    package cn.dailylearn.Final;
    public class FinalSubClass /*extends ClassFinal*/{//不能继承final修饰的
    }
    
    package cn.dailylearn.Final;
    
    /*
     * final关键字用来修饰一个方法的时候,这个方法就是最终方法,也就是不能被覆盖重写
     * 格式:
     * 修饰符  final  返回值类型  方法名称(参数列表){方法体}
     * 
     * 注意事项:对于类、方法来说,abstract关键字和final关键字不能同时使用,因为矛盾
     * */
    public class FinalMethodFu {
        
        /*
         * 对于成员变量来说,如果使用final关键字修饰,那么这边变量也照样是不可改变
         * 1:由于成员变量具有默认是,所以用来final之后必须手动赋值,不会再给默认是
         * 2:对于final的成员变量,要么使用直接赋值,要么通过构造方法赋值,二者选一
         * */
        private final String nameString;// = "Martin";
        public FinalMethodFu(String nameString) {
            this.nameString = nameString;
        }
        public String getNameString() {
            return nameString;
        }
        public final void finalMethod() {
            System.out.println("finalMethod");
        }
    }
    
    package cn.dailylearn.Final;
    
    public class FinalMethodZi extends FinalMethodFu{
    //  @Override
    //  public final void finalMethod() {  ---  错误
    //      System.out.println("finalMethod");
    //  }
        public String nameString;
        public FinalMethodZi() {
            super();
            // TODO Auto-generated constructor stub
        }
        public FinalMethodZi(String nameString) {
            this.nameString = nameString;
        }
        public String getNameString() {
            return nameString;
        }
        public void setNameString(String nameString) {
            this.nameString = nameString;
        }
    }
    
    package cn.dailylearn.Final;
    
    public class DemoMain {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            int num = 10;
            System.out.println(num);
            num = 20;
            System.out.println(num);
            
            //一旦使用final用来修饰局部变量,那么这个变量就不能进行更改
            final int finalnum = 80;
            System.out.println(finalnum);
    //      finalnum = 3; 错误写法
            
            final int finalNum;
            finalNum = 90;//正确
            System.out.println(finalNum);
            
            //对于基本类型来说,不可变说的是变量中的数据不可改变
    //      对于引用类型来说,不可变说的是变量当中的地址值不可变
            
            FinalMethodZi obj1 = new FinalMethodZi("Hello");
            System.out.println(obj1.getNameString());
            obj1 = new FinalMethodZi("World");
            System.out.println(obj1.nameString);
            
            final FinalMethodZi obj2 = new FinalMethodZi("Hello, Java");
            System.out.println(obj2.getNameString());
    //      obj2 = new FinalMethodZi("HelloPython");   错误
            obj2.setNameString("HelloPython");
            System.out.println(obj2.getNameString());
        }
    }
    

    相关文章

      网友评论

          本文标题:final关键字

          本文链接:https://www.haomeiwen.com/subject/ednzhctx.html