码迷,mamicode.com
首页 > 其他好文 > 详细

final关键字

时间:2020-03-06 21:51:58      阅读:51      评论:0      收藏:0      [点我收藏+]

标签:return   out   nal   基本数据类型   ide   引用   extends   private   print   

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

final关键字

标签:return   out   nal   基本数据类型   ide   引用   extends   private   print   

原文地址:https://www.cnblogs.com/anke-z/p/12430897.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!