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



核心内容:

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>在不同包之间,只有共有成员可以进行访问

如有问题,欢迎留言指正!

时间: 2024-10-09 05:51:23

深入理解Java中的访问控制符的相关文章

java中的访问控制符

首先来一张图: 对于一个类而言访问控制符只有一个public和默认无修饰符.其他的几个访问修饰符对于变量和方法都可以使用. 下面介绍具体的使用. 1. 公有访问控制符(public) Java的类是通过包的概念来组织的,包是类的一个松散的集合.处于同一个包中的类可以不需要任何说明二方便地相互访问和引用,而对于不同包中的类,则不行. 但如果一个类被声明为public时,它就具有了被其他包中的类访问的可能性,只要这些其他包中的类在程序中使用了import语句引入了public类,就可以访问和引用这个

理解java中的volatile关键字

Java语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量.这两种机制的提出都是为了 实现代码线程的安全性.Java 语言中的 volatile 变量可以被看作是一种 "程度较轻的 synchronized":与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的一部分. volatile 写和读的内存语义: 线程 A 写一个 volatile 变量,实质上是线程 A

(转) java中的访问修饰符

对Java中的修饰符一直记不住,现在结合网上的一些资料进行总结,并重点说明一下protected修饰符. 一. Java中的访问修饰符 Java面向对象的基本思想之一是封装细节并且公开接口.Java语言采用访问控制修饰符来控制类及类的方法和变量的访问权限,从而向使用者暴露接口,但隐藏实现细节.访问控制分为四种级别: (1)public: 用public修饰的类.类属变量及方法,包内及包外的任何类(包括子类和普通类)均可以访问: (2)protected: 用protected修饰的类.类属变量及

深入理解Java中的IO

深入理解Java中的IO 引言:     对程序语言的设计者来说,创建一个好的输入/输出(I/O)系统是一项艰难的任务 < Thinking in Java >   本文的目录视图如下: Java IO概要 a.Java IO中常用的类 b.Java流类的类结构图 1.流的概念和作用 2.Java IO所采用的模型  : 3.IO流的分类 4.Java IO流对象 1.输入字节流InputStream 2.输出字节流OutputStream 3.字符输入流Reader 4.字符输出流Write

java基础之访问控制符

访问控制符包括两类:类访问控制符和类成员访问控制符 1.类访问控制符 java中类的访问控制符只有一个:public,如果没有public说明,它就只具有包访问性. 2.类成员访问控制符,总结为一句话:属性的访问权限不能大于包的前提下,protected修饰的属性其所有子类都能访问.   公共类 默认类 类成员访问控制符 public protected 默认 private public protected 默认 private 可见性 A B+C B D B B B D

深刻理解Java中形参与实参,引用与对象的关系

声明:本博客为原创博客,未经允许,不得转载!原文链接为http://blog.csdn.net/bettarwang/article/details/30989755 我们都知道,在Java中,除了基本数据类型之外,其他的都是引用类型,当它们作为函数参数时,传递的也是引用,通过引用可以改变对象的值,很多人便因此而忽略形参与实参,引用与对象的关系问题.废话不多说,先看下面一个例子: import java.util.*; public class Student { private String

深刻理解Java中final的作用(一):从final的作用剖析String被设计成不可变类的深层原因

声明:本博客为原创博客,未经同意,不得转载!小伙伴们假设是在别的地方看到的话,建议还是来csdn上看吧(原文链接为http://blog.csdn.net/bettarwang/article/details/26744661),看代码和提问.讨论都更方便. Java中final的作用主要表如今三方面:修饰变量.修饰方法和修饰类.以下就从这两个方面来解说final的作用.在文末从final及类的设计安全性出发,论述了Java中String为何要被设计成不可变类. 1.final修饰变量 fina

线程的生命周期 - 理解Java中线程的状态

刚刚开始学cocos2-x,仅仅是按照教程把已经安了一般Android的开发环境的eclipse重新升级到安装好cdt和ndk就花了我几十小时,差点都要放弃了. 参考博客 D:\cocos2d-x\cocos2d-x-2.2.3\cocos2dx\platform\third_party\android\prebuilt 说说大概的过程: 下载ndk插件,ndk包,cdt插件.最开始我按照书上的下载了cocos2d-x 2.0.1,希望跟书上统一起来,这样以后学习的时候可以参考书上的也不会遇到太

浅析Java中的访问权限控制

浅析Java中的访问权限控制 今天我们来一起了解一下Java语言中的访问权限控制.在讨论访问权限控制之前,先来讨论一下为何需要访问权限控制.考虑两个场景: 场景1:工程师A编写了一个类ClassA,但是工程师A并不希望ClassA被该应用中其他所用的类都访问到,那么该如何处理? 场景2:如果工程师A编写了一个类ClassA,其中有两个方法fun1.fun2,工程师只想让fun1对外可见,也就是说,如果别的工程师来调用ClassA,只可以调用方法fun1,那么该怎么处理? 此时,访问权限控制便可以