Java的最终关键字和权限修饰符,之,final

发表时间:2021-05-11


这里是一段防爬虫文本,请读者忽略。
本文原创首发于CSDN,作者IDYS
博客首页:https://blog.csdn.net/weixin_41633902/
本文链接:https://blog.csdn.net/weixin_41633902/article/details/115741592
未经授权,禁止转载!恶意转载,后果自负!尊重原创,远离剽窃!

final关键字、权限修饰符

final关键字概念与四种用法

  • final 关键字代表最终、不可改变的意思

  • final 关键字常见的四种用法
  1. 用来修饰类
  2. 用来修饰方法
  3. 用来修饰局部变量
  4. 用来修饰成员变量

final关键字用于修饰类

  • final 关键字用于修饰一个类的时候,格式:
public final class 类名称 {
}

  • 含义:用 final 关键字修饰的这个类不能有任何的子类(太监类)

final关键字用于修饰成员方法

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

  • 格式:

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

注意事项

  • 对于类、方法来说, abstract 关键字和 final 关键字不能同时使用,因为矛盾
    • 因为 abstract 意味着必须要被覆盖重写,而 final 意味着不能被覆盖重写

final关键字用于修饰局部变量

  • 一旦使用 final 用来修饰局部变量,那么这个变量就不能进行更改
    • 只保证有唯一 一次赋值即可
    • 对于基本类型来说,不可变意味着变量当中的 数据不可改变
    • 对于引用类型来说,不可变意味着变量当中的 地址值不可改变

演示一

  • 其他类
package com.idayuanshuai.www.Demo1;

public class OperateSystem {
    String name;

    public OperateSystem(String name) {
        this.name = name;
    }

    public OperateSystem() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
  • 主类
package com.idayuanshuai.www.Demo1;

public  class Myclass {
    public static void main(String[] args) {
        System.out.println("this is idys's program ");
        // 基本类型定义方法一
        final int num1 =20;
        System.out.println(num1);
        // 基本类型定义方法二
        final int num2;
        num2 = 30;
        System.out.println(num2);
        final OperateSystem syName = new OperateSystem("linux");
        System.out.println(syName.getName());
        syName.setName("Windows");
        System.out.println(syName.getName());
        //  syName = new OperateSystem("Unix"); 因为syname已经用final修饰了,
        //  所以不能再将 syName 指向新的对象
    }

}
  • 输出结果
this is idys's program 
20
30
linux
Windows

final关键字修饰成员

  1. final 关键字修饰的成员变量,必须手动赋值
  2. 对于 final 的成员变量,要么直接赋值,要么通过构造方法赋值,二者必选其一
  3. 必须保证类当中所有重载的构造方法,都最终会对 final 的成员变量进行赋值

演示一(构造方法)

package com.idayuanshuai.www.Demo1;

public class StudentTest {
    private final String name;

    public StudentTest(String name) {
        this.name = name;
    }
    // 必须保证所有的构造方法都能对name赋值
    public String getName() {
        return name;
    }
    // 这个时候就不要去用setName方法了,因为name是用final修饰的,
    // 而构造方法里面已经有对其进行赋值
}

演示二(直接定义时对成员变量赋值)

package com.idayuanshuai.www.Demo1;

public class StudentTest1 {
    private final String name = "idys";

    public StudentTest1() {
    }

    public String getName() {
        return name;
    }
}

四种权限修饰符

  • Java 有四种权限修饰符,分别为:
  1. public
  2. protected
  3. (default)
  4. private
  • 它们的权限大小关系为:

    • public > protected > (default) > private
  • 注意事项: (default) 并不是关键字 default ,而是根本不写

  • 关于在各种情况下不同关键字的访问权限

public protected (default) private
同一个类(我自己) YES YES YES YES
同一个包(我邻居) YES YES YES NO
不同包子类(我儿子) YES YES NO NO
不同包非子类(陌生人) YES NO NO NO

写在最后的话:

  • 无论每个知识点的难易程度如何,我都会尽力将它描绘得足够细致
  • 欢迎关注我的CSDN博客, IDYS’BLOG
  • 持续更新内容
    linux基础 | 数据通信(路由交换,WLAN) | Python全栈 | 云计算
  • 如果你有什么疑问,或者是难题。欢迎评论或者私信我。你若留言,我必回复!
  • 虽然我现在还很渺小,但我会做好每一篇内容。谢谢关注!

文章来源互联网,如有侵权,请联系管理员删除。邮箱:417803890@qq.com / QQ:417803890

微配音

Python Free

邮箱:417803890@qq.com
QQ:417803890

皖ICP备19001818号-4
© 2019 copyright www.pythonf.cn - All rights reserved

微信扫一扫关注公众号:

联系方式

Python Free