• 十七、Java基础之final


    一、final修饰的类无法被继承

      1.final的意思就是:最终的,最后的

    例1:

    final class A{}
    class B extends A{}//无法从最终com.study.final关键字详解.A进行继承

    二、final修饰的方法无法被继承

    例2

    public class Test01 {
    
        public final void m1(){}
    
    }
    
    class Test02 extends Test01{
    
        //方法覆盖
       // public void m1(){}//com.study.final关键字详解.Test02中的m1()无法覆盖com.study.final关键字详解.Test01中的m1()被覆盖的方法为final
    }

    三、final修饰的局部变量,一旦赋值,不可改变

    例3:

    class A{
    
        public void m1(){
            //声明
            final int i;
    
            //第一次赋值
            i=100;
    
            //final定义的变量,不能重复赋值
            //i=200;//可能已分配变量i
        }
    }

    四、final修饰的成员变量必须“显示的”初始化

    例4:

    class A{
        //final修改的成员变量必须手动初始化
        //final int i;
        final int i=100;
    
        //final修饰的成员变量,在构造方法调用结束之前,赋值即可
        final int k;
    
        //constructor
        A(){
            k=100;
        }
    }

    五、final修饰的成员变量一般与static联用,被称作“常量”,java语言中规定所有的常量必须大写

    例5:

    class MyMath{
        //常量。java规范中要求所有的的常量“大写”
        //常量,值不可再改变的变量
        public static final int PL=100;
    }

     六、深入final

    1.抽象类不能被final修饰
    2.抽象方法不能被final修饰
    public /*final*/ abstract class Test02 {//Error:(7, 23) java: 非法的修饰符组合: abstract和final
        public /*final*/ abstract void m1();
    }

       3.final修饰的引用类型,该引用不可再重新指向其他的java对象。但是final修饰的引用,该引用指向的对象的属性是可以修改的

    public class Test02{
        public static void main(String[] args){
            final Customer c=new Customer("lucy",12);
            //c是final的,无法重新赋值
            //c=new Customer("lack",13);//Error
    
            c.name="李四";
            c.age=14;
            System.out.println(c.name);//李四
            System.out.println(c.age);//14
    
        }
    }
    
    class Customer{
        String name;
        int age;
    
        Customer(String name,int age){
            this.name=name;
            this.age=age;
        }
    }
  • 相关阅读:
    操作系统之磁盘结构笔记
    Linux 操作系统位数(32or64)识别
    手把手教你mysql(十)索引
    Linux命令 — 设置或查看网络配置命令ifconfig
    字符数组的排列
    android 加载图片防止内存溢出
    eCos系统CPU负载测量
    模糊控制——理论基础(4模糊推理)
    模糊控制——理论基础(3模糊关系及其运算)
    模糊控制——理论基础(2隶属函数)
  • 原文地址:https://www.cnblogs.com/chushujin/p/10090315.html
Copyright © 2020-2023  润新知