• Java学习记录-2.包与访问权限控制


    Java的源代码文件通常被称作编译单元,每个编译单元只能有一个public类。编译单元的后缀名为.java,名称为public类名。每个编译单元的非public类在包外是不可见的(除public外最有权限的为包访问权限),它们是public类的辅助类。

    在编译一个编译单元时,会为每一个类生成一个class文件,因此,编译少量的.Java编译单元会生成大量的.class文件。

    包是一些类文件的集合,每个类文件包含一个public类和若干非public类。包给类文件提供了一个保护伞,想要使用这个类,就必须import这个包,或者给出完整包名+类名。想要让一个类包含于某个包,只需在编译单元文件的开头用package语句。

    所有事物都具有访问权限,包括 public、protected、private,即便不指定访问权限,也会自动默认地指定一个包访问权限。

    1.包访问权限

    对包内成员为public,对包外成员为private。使得包内的成员可以互相作用。可以说,包访问权限使得把类全局在一个包中的做法提供了一种合理的解释。

    2.public

    为所有人提供了访问权限。

    3.private

    只有该类的成员可以访问。

    4.protected

    在包访问权限之外为包外的子类提供了权限。

    打通了包与包之间的一个通向子类与父类的一个通道。

    类的访问权限

    一个编译单元只能有一个public类,代表了一个公用接口,使用import PackageName.ClassNme即可。

    类的访问权限只有两种,public和包访问权限。

    final关键字

    final关键字笼统的概括为恒定不变,但在具体情况中也有细微不同,其主要适用情景为三大类:数据、方法、类。

    1.final数据

    基本类型的final数据相当于一个常量,需在定义的时候初始化,并且永远不变。也可以在类 中定义一个空白final实例域,但必须在构造器中初始化,这样才能确保final数据必须被初始化的原则不被打破。 

    对象引用的final数据意味着这个引用永远不变,但其所引用的那个实例却是可以编辑的。

    2.final方法。

    Java还允许将方法参数声明为final,含义日后补充。

    用final关键字修饰方法有两大意图,第一是为了优化效率,但在新版JVM中已经不被推荐。第二大意图是不希望这个方法在继承中被覆盖。

    与final方法相比,private方法直接对子类不可见,就算子类试图重载,也不过是定义了一个同名的方法。也因为不可见,所以给private方法添加final修饰并没有什么意义。

    3.final类

    final类的含义很简单,final类不会被继承,也就不会被方法重载,其实例域和方法也就不会被更改,所以其成员是隐式final。

  • 相关阅读:
    005 Stream的创建
    006 虚拟主机
    002 nginx的进程模型
    001 胡说八道
    001 nginx的简介和安装
    004 docker配置国内镜像站
    012 SSH
    发放失败,此请求可能存在风险,已被微信拦截【未解决】
    项目使用Nuget,然后SVN checkout后显示缺少引用
    使用存储过程非常慢,但是直接执行SQL很快
  • 原文地址:https://www.cnblogs.com/liuzey/p/8721382.html
Copyright © 2020-2023  润新知