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();
  }
}

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

import java.util.ArrayList;

public class SingleImport {
  public static void main(String[] args) {
    ArrayList list = new ArrayList();
  }
}

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

import java.sql.*;

import java.util.*;

public class Main {
    public static void main(String[] args) {
       Date d=new Date();//编译报错
    }
}

修改:

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

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodePanda@GPF

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值