• on java8之封装


    1. 包的概念

    包内包含一组类,它们被组织在一个单独的命名空间(namespace)下。

    eg: 标准 Java 发布中有一个工具库,它被组织在 java.util 命名空间下。java.util 中含有一个类,叫做 ArrayList。使用 ArrayList 的一种方式是用其全名java.util.ArrayList

    public class FullQualification {
      public static void main(String[] args) {
        java.util.ArrayList list =new java.util.ArrayList();
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    使用import导入,减少冗余代码

    import java.util.ArrayList;
    
    public class SingleImport {
      public static void main(String[] args) {
        ArrayList list = new ArrayList();
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    冲突:
    通过 * 导入了两个包含相同名字类名的类库, 比如同时导入了sql包和util包下的Date类,在使用时如果不显示指明是哪个包下的类,而直接使用就会报错

    import java.sql.*;
    
    import java.util.*;
    
    public class Main {
        public static void main(String[] args) {
           Date d=new Date();//编译报错
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    修改:

    public class Main {
        public static void main(String[] args) {
            java.util.Date d1=new java.util.Date();
            java.sql.Date d2=new java.sql.Date(1000);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2. 访问权限修饰符

    修饰符同一个类中同一个包中(子类和无关类)不同包(子类)不同包(无关类)
    public
    protected×
    default(默认权限、包访问权限)××
    public×××
    • 使用关键字 public,就意味着紧随 public 后声明的成员对于每个人都是可用的
    • 关键字 private 意味着除了包含该成员的类,其他任何类都无法访问这个成员(使用private修饰构造器,则外部类不能new出该类的对象—单例模式)
    • 默认的包访问权限(default)通常提供了足够的隐藏措施, 使用类的客户端程序员无法访问包访问权限成员
    • 继承的类既可以访问 public 成员,也可以访问 protected 成员

    在一个具有包访问权限的类中定义一个 public 的构造器并不能真的使这个构造器成为 public,在声明的时候就应该标记为编译时错误


    3. 类访问权限

    1. 每个编译单元(即每个文件)中只能有一个 public 类。这表示,每个编译单元有一个公共的接口用 public 类表示。该接口可以包含许多支持包访问权限的类。一旦一个编译单元中出现一个以上的 public 类,编译就会报错
    2. public 类的名称必须与含有该编译单元的文件名相同,包括大小写。所以对于 Widget 来说,文件名必须是 Widget.java,不能是 widget.java 或WIDGET.java。再次强调,如果名字不匹配,编译器会报错
    3. 虽然不是很常见,但是编译单元内没有 public 类也是可能的。这时可以随意命名文件
    4. 类既不能是 private 的(这样除了该类自身,任何类都不能访问它),也不能是 protected(a包中有一个类A, b包中有一个类B类,B类要想成为A类的子类首先要访问到A类,但是访问A类的前提是成为A类的子类,因此是矛盾的。如果B类也在a包下,使用protected修饰是多余的,效果和default修饰一样) 的。所以对于类的访问权限只有两种选择:包访问权限或者 public
  • 相关阅读:
    【方案】TSINGSEE青犀防溺水AI算法在水域智能监管与风险预警场景中的应用
    python协议解析
    【数据结构初阶】三、 线性表里的链表(无头+单向+非循环链表)
    Hive日分区表如何快速导入到StarRocks
    测试行业干了5年,从只会点点点到了现在的测试开发,总算是证明了自己
    猿创征文|2022年快过完了,是时候总结一下那些优秀的 React 组件库
    Mysql内置函数、复合查询和内外连笔记
    华为云安装Docker,在其中安装Tomcat运行Html项目一步到位
    Git详解(持续更新)
    狮群算法优化长短期神经网络LSTM的煤炭销量预测资源,LSTM详细原理,狮群算法原理
  • 原文地址:https://blog.csdn.net/qq_43478694/article/details/126479406