你所看到的,只是别人所想让你看到的......
Java是安全的语言,一方面是因为虚拟机帮开发人员管理了内存分配回收,另一方面是因为有访问权限修饰符。
0、Java的包
为了防止包重复,包命名规范是域名反过来的。
如:
- 百度的域名是
baidu.com
,包名是com.baidu
。 - 腾讯的是
tecent.com
,包名是com.tencent
。 - 我们经常看到的包名
org.springframework.***
,它的域名其实是springframework.org
,org一般是组织或机构的域名后缀。
baidu.com
是一级域名,www.baidu.com
、xxx.baidu.com
等都是二级域名,理论上二级域名可以无限多。
如下:是两个包com.baidu.study
和com.tencent.study
。分别有Teacher
老师类和Student
学生类。
一个类的代码的第一行是当前类所在的包,如Teacher
类代码的第一行package com.baidu.study;
,说明Teacher
在com.baidu.study
包(目录)下。
package com.baidu.study;
public class Teacher {
}
一个类需要用到其它包的类可以通过import
关键字引入。如Student
类需要用到Teacher
类可以通过import com.baidu.study.Teacher;
引入。
package com.tencent.study;
import com.baidu.study.Teacher;
public class Student {
public static void main(String[] args) {
Teacher teacher = new Teacher();
}
}
可以用通配符*
引入com.baidu.study
包下所有的类,如:import com.baidu.study.*
2、访问权限修饰符
访问权限修饰符包括:public、protected、private和默认修饰符(friendly/包访问权限)。 可以修饰在类
、字段
、方法
前面。
public:公开权限,所有类都可以访问。
protected:继承访问权限,只有当前类和子类可以访问。
private:私有访问权限,只有当前类可以访问。
默认修饰符:类、属性、方法前面不加任何修饰符就是默认修饰符,也被称为包访问权限,只有当前包可以访问。
举几个栗子:
1)如果a包下的A类是public的,它的字段和方法都是private的。在b包下的B类可以创建A类的对象,但是无法访问A类对象的字段和方法。
2)如果a包下的A类没有修饰符。在b包下的B类无法创建A类的对象。
3)如果a包下的A类没有修饰符,它的字段和方法都是private的。在a包下的B类可以创建A类的对象,但无法访问A类对象的字段和方法。
类库的设计者只需要把使用者需要的字段和方法暴露出去,不希望被使用者修改的就隐藏。
2、结语
万法归宗,夯实基础才能在不断变化的Java框架上游刃有余。
关注微信公众号:小虎哥的技术博客
网友评论