为了更好地组织类,Java提供了包机制。包是类的容器,用于分隔类名空间。如果没有指定包名,所有的示例都属于一个默认的无名包。
包的命名规则
1、包的命名完全用小写字母(多个单词也用小写)
2、如果包名含有多个层次,每个层次用(.)分割
3、包名一般由倒置的域名开头,如com.baidu
4、自定义包不能Java开头
package语句用于指明源文件定义的类所在的包,一个Java源文件内只能有一条package语句,如果Java源文件中有package语句,则该语句一定是源文件中的第一条可执行语句,它的前面只能有注释或空行
包的作用
1、有利于类的查找和管理。一个软件由很多类构成,这些类按其功能可分为vo类、dao类、工具类、service类、controller类等,将这些类按其功能分门别类地放在不同包中有利于类的查找与管理;
2、解决了同类名冲突。
3、有利于保护类中的成员变量和方法。类中成员变量及其方法前面的访问控制符决定了该变量和方法的使用范围;
引包
什么时候需要引包:
自定义类中使用在不同一包中的其它自定义类时;
自定义类中除java.lang包以外的其它包中的JDK中自带的类时就需要引包;
自定义类中使用其它第三方jar包中的类或接口时需要引包;
如何引包:
直接使用完整类名引包:
public class Son {
public static void main(String[] args) {
java.util.Scanner sc=new java.util.Scanner(System.in);//完整类名引包
}
}
使用import关键字:
1、import 包名,类名:
import java.util.Scanner;
public class Son {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
}
}
2、import 包名.*,这种方式将向类中导入该包中的所有公共类;
import java.util.*;
public class Son {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
}
}
在包中的类不能使用默认包中的类。
访问控制符:
软件中的某些属性和方法出于程序安全考虑不允许被其它类操作和调用,这就需要使用Java中的访问权限修饰符,Java中的访问权限修饰符有4中。
Java中的访问权限修饰符可以修饰成员变量、构造方法、普通方法。
访问控制符使用范围:
public是最大的访问权限修饰符,其修饰的成员变量、构造方法和普通方法可在任何一个类中被操作或使用;
protected修饰的成员变量、构造方法和普通方法可以在其定义类中、与定义类同包的其它类(可以使子类)中和与定义类不同包但是其子类的类中使用;
默认(友好的)修饰的成员变量、构造方法和普通方法可以在其定义类中和与定义类同包的其它类(可以使子类)中使用;
private是最小的访问权限控制符,其修饰的成员变量、构造方法和普通方法只能在定义它们的类中被操作或使用;
封装
封装是Java三大特征之一,指使用公有方法操作类中私有属性以保证数据的安全性。
在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法
封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。
要访问该类的代码和数据,必须通过严格的接口控制。
封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。
适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。
public class Student {
private int age;//年龄
public int getAge() {
return age;
}
public void setAge(int age) {//age属性的值一定会大于、等于0且小于150
if(age>0 && age<150) {
this.age = age;
}
}
}
Eclipse中快速生成setter方法和getter方法:
1、鼠标定位在类中鼠标右键点击“Source”点击“Generate Getters and Setters...”,出现下图:
2、点击“Select All”按钮点击“OK”按钮,至此操作完毕。