Java中的包和public、protected、private

你所看到的,只是别人所想让你看到的......

Java是安全的语言,一方面是因为虚拟机帮开发人员管理了内存分配回收,另一方面是因为有访问权限修饰符。

0、Java的包

为了防止包重复,包命名规范是域名反过来的。

如:

  • 百度的域名是baidu.com,包名是com.baidu
  • 腾讯的是tecent.com,包名是com.tencent
  • 我们经常看到的包名org.springframework.***,它的域名其实是springframework.orgorg一般是组织或机构的域名后缀。

baidu.com是一级域名,www.baidu.comxxx.baidu.com等都是二级域名,理论上二级域名可以无限多。


如下:是两个包com.baidu.studycom.tencent.study。分别有Teacher老师类和Student学生类。

01.png

一个类的代码的第一行是当前类所在的包,如Teacher类代码的第一行package com.baidu.study;,说明Teachercom.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框架上游刃有余。

关注微信公众号:小虎哥的技术博客

你可能感兴趣的:(Java中的包和public、protected、private)