深入理解Java中的访问控制符

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a2011480169/article/details/52203250

核心内容:
1、Java中包的相关概念
2、Java中访问控制符的具体用法(详解)


1、简述Java中包的概念

Java中的包类似于操作系统中的文件夹,将具有类似功能的类或者相同的类放在相同的包里面,便于组织与管理.
如:若一个类专门用于数据传输,将这个类放在IO包里面.

2、简述调用某个包中的类的三种方式

1>使用一个类的全名:即包名+类名
注意:在包中,所有类的真正的名字将是包名+类名的组合,所以在运行的时候要将包层给写上,不能直接写类名.
2>使用import语句导入一个包中的所有的类
3>使用import语句导入一个包中的特定的类(常用)

3、简述类前面修饰符的注意事项

如果一个类不是内部类,则在类的前面只能加public或者什么也不加,不能加protectd或者default或者private这些访问控制符,试用一切类,包括启动类.

4、Java中访问控制符的具体用法

Java中的访问控制符按照访问权限由高到低的顺序依次是public、protected、默认(无访问控制符)、private. Java中访问控制符的具体用法:


(1)在一个类的内部,所有的成员彼此之间都可以进行相互访问,访问控制符是透明的,失效的,共有的可以调用私有的,私有的可以调用共有的.

示例程序:

package IT01;

public class Persion
{
   public String name;       //public
   protected Double score;   //protected
   String gender;            //默认访问控制符
   private void f()          //private
   {
      System.out.println(name+"\t"+score+"\t"+gender); 
   }
}
(2)在同包不同类之间,只有其私有成员不可以通过类对象名的方式进行访问,共有成员和保护型的成员都可以通过这种方式进行访问. 简言之:在同一个包的内部,只有其私有成员不能够进行访问

示例程序:

package IT01;

public class Persion
{
   public String name;       //public
   protected Double score;   //protected
   String gender;            //默认访问控制符
   private void f()          //private
   {
      System.out.println(name+"\t"+score+"\t"+gender); 
   }
}

这里写图片描述

从上面的程序不难看出,只有私有成员f()不能够进行访问.

(3)在不同包存在继承关系的两个类之间,只有共有类的共有成员和共有类的保护型成员才可以被另外一个包中的子类进行访问,但是在一个子类的外部,只有共有类的共有成员才可以被直接的访问.

示例程序:

package IT01;

public class Persion
{
   public String name;       //public
   protected Double score;   //protected
   String gender;            //默认访问控制符
   private void f()          //private
   {
      System.out.println(name+"\t"+score+"\t"+gender); 
   }
}

在子类的内部:
这里写图片描述
可以看出,在子类的内部,只有父类的共有成员和保护型的成员可以进行访问,而默认成员和私有成员不可以被访问
在子类的外部:

package IT01;

public class Persion
{
   public String name;       //public
   protected Double score;   //protected
   String gender;            //默认访问控制符
   private void f()          //private
   {
      System.out.println(name+"\t"+score+"\t"+gender); 
   }
}
package IT02;

import IT01.Persion;

public class Student extends Persion  //Student子类继承父类
{

}

这里写图片描述
从上面可以看出,在子类的外部,只有父类的共有成员可以访问.

(4)在不同包无任何关系的两个类之间,只有共有类的共有成员才可以被另外一个包中的类进行访问.

注意:
1>不同包之间,只有共有的类才可以被另外一个包进行使用.
2>不同包之间,若一个类是共有的,只能保证在另外一个包中可以生成它的实例对象,但是不能保证可以调用该类中的成员.
实例程序:

package IT01;

public class Persion
{
   public String name;       //public
   protected Double score;   //protected
   String gender;            //默认访问控制符
   private void f()          //private
   {
      System.out.println(name+"\t"+score+"\t"+gender); 
   }
}

这里写图片描述
从上面的程序可以看出,在不同包之间,只有共有类的共有成员可以在另外一个包中进行访问.
Java中的访问控制符的具体用法可以用下面的一个表来描述:
这里写图片描述
总结:
1>在一个类的内部,访问控制符是透明的,失效的
2>在同一个包的内部,只有private有成员不能进行访问
3>在不同包存在继承关系的两个类之间,只有public成员和protected成员可以进行访问
4>在不同包之间,只有共有成员可以进行访问
如有问题,欢迎留言指正!

展开阅读全文

没有更多推荐了,返回首页