zoukankan      html  css  js  c++  java
  • final关键字

    final可以用来修饰变量,可以用来修饰类,可以修饰方法

    1、final 变量的值不能被改变

      final的成员变量

      final的局部变量

    2、final的 方法不能够被重写

    3、final的类不能被继承

    下面 看一下这个程序进行学习:

    一、

    public class TestFinal {
        public static void main(String[] args) {
            T t = new T();
            t.i = 9;  //在这里是错误的,不可以改变i的值,因为是i是final的
        }
    }
    
    final class T {
        final int i = 8; 
    
    } 

      在上面的代码中 我先定义了一个变量i,是final的,在main函数里 将T的对象进行实例化,t.i=9 进行改变i的值,这是不可以的。

    二、

    在上述代码中:

    public class TestFinal {
        public static void main(String[] args) {
            T t = new T();
            
        }
    }
    
    final class T {
        final int i = 8; 
        public void m(final int j) {
            j = 9;
        }
    
    } 

    我定义了一个方法m, 形参是final的,意思就是说,当传进这个方法m中的j不能够在m方法里面进行改变
    ,所以上面的书写也是错误的,这个有什么用途呢,假如说将上面的几行代码写成这样:
    pulic void m (final Cat c){
    //
    }
    这个将final int i改成了 final Cat c,说明在这个m方法中,Cat c 不能将这个引用指向其他的猫
    三、
    public class TestFinal {
        public static void main(String[] args) {
            T t = new T();
            
        }
    }
     class T {
        final int i = 8; 
        public final void m() {
            //j = 9;
        }
    } 
    
    class TT extends T {
        /*
         * 这里TT类继承T类,不能重写m方法,因为在父类中m方法
         * 被修饰成final的
         */
        public void m() {
            
        } 

    这段代码进行证明了final的 方法是不能够被重写的

    四、

    public class TestFinal {
        public static void main(String[] args) {
            T t = new T();
            
        }
    }
    
    final class T {
        final int i = 8; 
        public final void m() {
            //j = 9;
        }
    } 
    
    class TT extends T {
        /*
         * 这里TT类不能够继承T类,因为final修饰的类不能被继承
         */
        public void m() {
            
        } 
        
    }
    这里将T类被修饰成final,下面TT子类是不能被继承T类的,因为,被final修饰的类不能被继承的

    总的来说final的语法还是比较简单的。

  • 相关阅读:
    数据类型及用法
    NFS与SSH
    nginx服务,nginx反向代理
    rpm软件包管理
    磁盘分区,文件系统,软链接和硬链接,内存和进程管理
    Linux常用命令,文件目录和权限管理
    操作系统与网络协议(day3)
    计算机基础之硬件简介(Day2)
    QT写串口
    485传输
  • 原文地址:https://www.cnblogs.com/white-the-Alan/p/10183672.html
Copyright © 2011-2022 走看看