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

    final关键字

    1.1 概述

    final关键字代表最终、不可改变的内容。

    • final:不可改变。用于修饰类、方法和变量
      • 类:被修饰的类,不能被继承。
      • 方法:被修饰的方法,不能被重写。
      • 变量:被修饰的变量,不能被重新赋值

    1.2 使用方法

    1.修饰类

    含义:当前这个类不能有任何的子类。(太监类)

    格式:

    public final class 类名称{
      	// ......
    }
    

    注意:一个类如果是final的,那么其中的所有成员方法都无法进行覆盖重写(因为没有子类)

    2.修饰成员方法

    当final关键字用来修饰一个方法的时候,这个方法就是最终方法,不能被覆盖重写

    格式:

    修饰符 final 返回值类型 方法名称(参数列表){
         // 方法体
    }
    

    注意事项:

    对于类,方法来说,abstract和final关键字不能同时用,因为矛盾

    public void Fu{
        public final void method(){
            System.out.println("父类方法执行~");
        }
    }
    
    public void Zi extends Fu{
         // 会发生报错
        @Override
        public void method(){
            System.out.println("重写父类方法~")
        }
    }
    

    3.修饰局部变量

    对于基本数据类型来说:

    不可变说的是变量中的【数据】不可变

    一次赋值,终身不变

    public static void main(String[] args){
        final int num = 10;
         System.out.println(num);// 10
        // num = 20; 报错
    }
    

    对于引用类型来说是【地址值】不可变

    // 定一个学生类
    public class Student{
        private String name;
        public Student(){
            
        }
        public Student(String name){
            this.name = name;
        }
        public void setName(String name){
            this.name = name;
        }
        public String getName(){
            return name;
        }
    }
    
    public class Final{
        public static void main(String[] args){
            final Stundet stu = new Student("雷神");
             System.out.println(stu); // 雷神
            //错误写法,final的引用类型变量的地址值不可改变
            // stu = new Student("蛇女");
            // 但是方法可以调用
            stu.setName("金刚狼");
            System.out.println(stu);// 金刚狼
        }
    }
    

    4.修饰成员变量

    使用final关键字修饰后,那么这个变量是不可能改变的。

    成员变量初始化的方法有两种,只能二选一:

    • 显示初始化:

      public class User{
          final String USERNAME = "张三";
          private int age;
      }
      
    • 构造方法初始化

      public class User{
          final String USERNAME;
          private int age;
          public User(String username,int age){
              this.USERNAME = username;
              this.age = age;
          }
      }
      

      注意:

      ​ 被final修饰的常量名称,一般都有书写规范,所有字母都大写。

      举例:

      public class Person{
          
          private final String name/* = 雷神*/;
          public Person(){
              name = "蜘蛛侠";
          }
          public Person(String name){
              this.name = name;
          }
          public String getName(){
              return name;
          }
          
         // public void setName(String name){
            //  this.name = name;
          //}
      }
      

  • 相关阅读:
    [OpenJudge] 反正切函数的应用 (枚举)(数学)
    [OpenJudge] 摘花生 (模拟)
    [OpenJudge] 宇航员(模拟)
    [OpenJudge] 显示器(模拟)
    背包问题
    BFS_最短路径
    链表
    网站
    网站
    洛谷_递归整理
  • 原文地址:https://www.cnblogs.com/anke-z/p/12430897.html
Copyright © 2011-2022 走看看