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;
          //}
      }
      

  • 相关阅读:
    高级(线性)素数筛
    Dijkstra(迪杰斯特拉)算法
    简单素数筛
    【解题报告】 POJ1958 奇怪的汉诺塔(Strange Tower of Hanoi)
    4 jQuery Chatting Plugins | jQuery UI Chatbox Plugin Examples Like Facebook, Gmail
    Web User Control Collection data is not storing
    How to turn on IE9 Compatibility View programmatically in Javascript
    从Javascrip 脚本中执行.exe 文件
    HtmlEditorExtender Ajax
    GRIDVIEW模板中查找控件的方式JAVASCRIPT
  • 原文地址:https://www.cnblogs.com/anke-z/p/12430897.html
Copyright © 2011-2022 走看看