隐藏和封装

封装实际上有两个方面的含义:把该隐藏的隐藏起来,把该暴露的暴露出来。这两个方面都需要通过使用Java提供的访问控制符来实现。

Java提供了3个访问控制符:private、protected和public,分别代表了3个访问控制级别,另外还有一个不加任何访问控制符的访问控制级别,提供了4个访问控制级别。

Java的访问控制级别由小到大如图5.14所示:

java隐藏下载的文件 java中隐藏的概念_java

java隐藏下载的文件 java中隐藏的概念_java_02

关于访问控制符的使用,存在如下几条基本原则。

➢ 类里的绝大部分成员变量都应该使用private修饰,只有一些static修饰的、类似全局变量的成员变量,才可能考虑使用public修饰。

    除此之外,有些方法只用于辅助实现该类的其他方法,这些方法被称为工具方法,工具方法也应该使用private修饰。

➢ 如果某个类主要用做其他类的父类,该类里包含的大部分方法可能仅希望被其子类重写,而不想被外界直接调用,则应该使用protected修饰这些方法。

➢ 希望暴露出来给其他类自由调用的方法应该使用public修饰。因此,类的构造器通过使用public修饰,从而允许在其他地方创建该类的实例。

     因为外部类通常都希望被其他类自由使用,所以大部分外部类都使用public修饰。

package语句必须作为源文件的第一条非注释性语句,一个源文件只能指定一个包,即只能包含一条package语句,该源文件中可以定义多个类,则这些类将全部位于该包下。如果没有显式指定package语句,则处于默认包下。

import可以向某个Java文件中导入指定包层次下某个类或全部类,import语句应该出现在package语句(如果有的话)之后、类定义之前。

JDK 1.5以后更是增加了一种静态导入的语法,它用于导入指定类的某个静态成员变量、方法或全部的静态成员变量、方法。

静态导入使用import static语句,静态导入也有两种语法,分别用于导入指定类的单个静态成员变量、方法和全部静态成员变量、方法

Java的核心类都放在java包以及其子包下,Java扩展的许多类都放在javax包以及其子包下。

下面几个包是Java语言中的常用包:

➢ java.lang:这个包下包含了Java语言的核心类,如String、Math、System和Thread类等,使用这个包下的类无须使用import语句导入,系统会自动导入这个包下的所有类。

➢ java.util:这个包下包含了Java的大量工具类/接口和集合框架类/接口,例如Arrays和List、Set等。

➢ java.net:这个包下包含了一些Java网络编程相关的类/接口。

➢ java.io:这个包下包含了一些Java输入/输出编程相关的类/接口。

➢ java.text:这个包下包含了一些Java格式化相关的类。

➢ java.sql:这个包下包含了Java进行JDBC数据库编程的相关类/接口。

➢ java.awt:这个包下包含了抽象窗口工具集的相关类/接口,这些类主要用于构建图形用户界面(GUI)程序。

➢ java.swing:这个包下包含了Swing图形用户界面编程的相关类/接口,这些类可用于构建平台无关的GUI程序。