目录
封装
访问限定符
软件包
如何导入包
自定义包
封装
封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互。换句话说,就是为程序屏蔽细节,只留功能接口。
访问限定符
而要实现封装,需要用到访问限定符。不同的访问限定符提供了不同的权限,访问权限用来控制方法或者字段能否直接在类外使用。Java中提供了四种不同的访问限定符:
范围 | private | default (默认) | protected | public |
同包同类 | True | True | True | True |
同包不同类 | | True | True | True |
不同包子类 | | | True | True |
不同包非子类 | | | | True |
public权限表示任何情况下都能访问,而private权限则只能在同一类中才能访问,否则发生编译出错。
软件包
封装通过包来实现,包就像一个文件夹,把各种软件放在一个文件夹下,方便访问。为了更好的管理类,把多个类收集在一起成为一组,成为软件包。为了更好的管理,通常把具有某些相同属性的类放在同一个包下。正因为包的出现,Java才能更好的限制不同类的访问权限。包还有一个重要的作用:在同一个工程中允许存在相同名称的类,只要处在不同的包中即可。
如何导入包
如果要导入某个包中的某个类,例如Java中现成的Scanner类,可以使用 java.util.Scanner导入。util为包名,Date为类名。两种方法:
方法一:
public class Testes {
public static void main(String[] args) {
java.util.Scanner scanner = new java.util.Scanner(System.in);
int num = scanner.nextInt();
System.out.println(num);
}
}
方法二:
import java.util.Scanner;
public class Testes {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
System.out.println(num);
}
}
当然,有时候我们需要包内的类不止一个,如果像这样一个一个导入比较麻烦,可以用*来代替类名,这样,当我们用到包中的某个类时,编译器自动帮助导入。
上面我们说一个工程中可以有相同的类名,只需要在不同的包中即可,那么当我们导入两个不同的包而同时这两个包中恰巧有相同的类名时,编译器无法辨识,发生编译错误,这时import导入方法失效,需要用到第一种方法。
Java中的常用包
- java.lang:系统常用基础类(String、Object)。JDK1.1后自动导入。
- java.lang.reflect:java 反射编程包;
- java.net:进行网络编程开发包。
- java.sql:进行数据库开发的支持包。
- java.util:是java提供的工具程序包。(集合类等) 非常重要
- java.io:I/O编程开发包。
自定义包
首先是创建包:
选择src->New->Pacakage创建自定义包
包名一般通过域名的颠倒来命名,例如:
创建好包以后,在包中新建类即可。例如创建一个Animal类:
创建好的类上面会有一个package 包名:
注意包名一定要匹配好,如果不写package则该类会放到默认包中。