`
tonysmith
  • 浏览: 176675 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java 中的访问权限控制

阅读更多

要辞职了,突然觉得这两年来,一直没有思考的时间。都是在马不停蹄的工作中和加班中。在离职的这段时间,写写代码,好好思考一下这两年的东西。沉淀沉淀。

 

记得有次面试,面试官问我:java的访问权限有几种:当时我说了三种,其实是四种,见下表。多余的犊子有时间再扯。

 

1. Java中的访问控制
表1-1

 

可见/访问性 在同一类中 同一包中 不同包中 同一包子类中 不同包子类中
public yes yes yes yes yes
protected yes yes no yes yes
package yes yes no yes no
private yes no no no no

 

(1)在java中有public、protected、private三种显示的修饰符用于控制可见性,package不是显示的修饰符,它是隐含的,即如果在类、变量等前没加显示的可见性修饰符,那它就是package级别的。如果在类的定义中没有指定package,那么java会把它放在缺省包中,一般来说这个缺省的包就是当前目录。
(2)在子类中的方法如果重载了父类的方法,那么该方法的可见级别应更底或者相同,如父类中的方法是public,那么子类中方法必须是public。
(3)在java中,一般来说,变量成员最好是private,对它们的访问可以通过public的方法,在这些方法中可以做些控制以保证数据的一致性。这些方法名一般以get和set做为前缀。

2. 包
包名一般为小写,而类名的第一个字母一般为大写,这样在引用时,可以明显的分辨出包名和类名。如果在类的定义之前没有使用package定义包名,那么该类就属于缺省的包。

2.1 Hello Package
首先通过一个简单的package的定义来学习package的使用:

package testPackage;

public class Test
{
public static void main(String args[])
{
mNode node = new mNode();
node.print("hello");
}
}
说明:
(1) 使用package关键字指明类所在的包;
(2) package语句必须在文件的最前面;
(3) 编译时可使用javac –d . Test.java自动产生包需要目录;
(4) 可以使用java testPackage.Test来执行编译后的代码;
2.2 包的几个作用:
(1) 可以更好的组织类,包与文件夹类似,文件夹可以将不同的文件放在同一个文件夹中,而包也可以将不同的类文件放在同一包中;
(2)减少类名的冲突问题,这也与文件夹类似,同一文件夹中的文件不能重名,不同文件中的文件可以重名,同一包中的类名不能重复,不同包中的类名可以重复;
(3) 对包中的类起了一定的保护作用,详见java的访问控制;
2.3 import的使用
(1) 直接引用指定的类,如import java.util.Vector;
(2) 引用一个包中的多个类,如import java.awt.*。更确切的说,它并不是引用java.awt中的所有类,而只引用定义为public的类,并且只引用被代码引用的类,所以这种引用方法并不会降低程序的性能;
(3) *号代替类名,在不能代替包名,如import java.awt.*,只引用java.awt下的类,而不引用java.awt下的包;
(4) import java.awt.F*,这种使用方法是错误的;
(5) import语句在所有类定义之前,在package定义之后;
(6) import只告诉编译器及解释器哪里可以找到类、变量、方法的定义,而并没有将这些定义引入代码中;
2.4 包中类的使用
有以下几种机制可以使用包中的类:
(1)如果要使用的类是属于java.lang包的,那么可以直接使用类名来引用指定的类,而不需要加上包名,因为包java.lang不用显示使用import,它是缺省引入的;
(2)如果要使用的类在其它包(java.lang除外)中,那么可以通过包名加上类名来引用该类,如java.awt.Font
(3) 对于经常要使用的类(该类在其它包中),那么最好使用import引用指定的包,如java.awt.*
(4) 如果import引入的不同的包中包含有相同的类名,那么这些类的使用必须加上包名
(5) 接口也可以属于某个包,也可以使用import引入其它包中的类和接口

分享到:
评论
2 楼 tonysmith 2012-03-01  
兄弟说的太对了。干活用了一年多,考官一问,只知其一。这是个“杯具”。所以我们要学会思考。
1 楼 上官车月 2012-03-01  
像牛一样的干了一年多,除了工作和加班 还真没有想过,基础的东西天天都在用但要说出来有点难的哦,,呵呵

相关推荐

    Java访问权限控制源代码

    在提供的"Java访问权限控制源代码"中,可能包含示例类,这些类展示了如何使用不同的访问修饰符来控制类、变量和方法的可见性。`readme.md`文件可能包含了代码的介绍和使用指南。 通过学习和理解Java的访问权限控制...

    Java访问权限控制

    很清楚的分析与讲解Java的访问权限的控制

    java spring AOP权限控制

    Java Spring AOP 权限控制 Java Spring AOP 权限控制是指在 Java Spring 框架下使用 Aspect-Oriented Programming(面向方面编程)技术来实现权限控制。权限控制是指对用户的访问权限进行控制和管理,以确保系统的...

    Java访问权限控制源代码.zip

    这个"Java访问权限控制源代码.zip"压缩包可能包含了示例代码,用于演示Java中的不同访问修饰符如何工作以及如何实施访问控制。现在,我们将深入探讨Java中的访问权限控制机制。 首先,Java提供了四种访问级别: 1....

    java写的一个权限控制的插件

    8. **源码分析**:作为学习参考,我们可以研究源码来了解其设计模式,如工厂模式、策略模式等在权限控制中的应用,以及如何使用Jaas或其他安全库实现具体功能。 总之,这个名为`jsecurity-0.9.0`的Java权限控制插件...

    基于Java的访问权限控制源代码.zip

    在Java编程语言中,访问权限控制是面向对象编程的一个核心特性,它确保了代码的安全性和封装性。这个压缩包“基于Java的访问权限控制源代码.zip”很可能包含了一些示例代码,展示了如何在Java中实现不同级别的访问...

    JAVA源码Java访问权限控制源代码JAVA源码Java访问权限控制源代码

    JAVA源码Java访问权限控制源代码JAVA源码Java访问权限控制源代码

    基于java的访问权限控制源代码.zip

    在Java编程语言中,访问权限控制是面向对象编程的一个核心概念,它确保了代码的安全性和封装性。这个压缩包“基于java的访问权限控制源代码.zip”很可能包含了一系列示例,用于演示如何在Java中实现不同级别的访问...

    浅析Java中的访问权限控制Java开发Java经验技巧共

    在Java编程语言中,访问权限控制是至关重要的一个概念,它确保了代码的封装性和安全性。本文将深入探讨Java中的访问权限控制,以及其在实际开发中的应用和重要性。 首先,Java提供了四种不同的访问级别,分别是:...

    java 访问权限验证

    在Java编程语言中,访问权限控制是至关重要的一个部分,它确保了代码的封装性和安全性。本文将深入探讨Java中的访问权限验证,包括其概念、种类以及如何在实践中应用。 **一、访问权限概述** Java提供了四种不同的...

    java后台权限控制

    Java 后台权限控制是构建安全的Web应用中不可或缺的一部分,它确保了用户只能访问他们被授权的操作和数据。在Java开发中,Apache Shiro是一个非常流行的安全框架,用于实现身份验证、授权(权限控制)、会话管理和...

    java访问控制符.txt

    简要叙述什么是访问控制符,列出Java中的访问控制符,并说明各个访问控制符的控制权限

    Java中的访问控制

    在没有指定任何访问修饰符的情况下,类、接口、方法和字段将具有这种默认的访问权限。 通过合理使用这四种访问控制,我们可以控制代码的可见性和访问性,从而实现良好的模块化设计。例如,我们可以把敏感数据设为...

    java 用户权限管理图

    通过对权限管理系统的需求分析和数据库设计,我们可以实现一个完善的权限管理系统,满足大部分 B/S 系统中对用户功能权限控制的需求。 首先,我们需要了解为什么 B/S 系统中的权限管理更加重要。在 C/S 系统中,...

    java权限控制

    在权限控制中,过滤器通常用来检查用户是否已登录,或者用户是否有足够的权限访问特定资源。通过实现`javax.servlet.Filter`接口并重写`doFilter()`方法,我们可以创建自定义的过滤器逻辑。 2. **权限控制的基本...

    Java访问权限控制源代码.rar

    本资源"Java访问权限控制源代码.rar"可能包含了一系列示例,用于展示如何在Java中应用不同的访问修饰符,以及它们如何影响类、方法和变量的可见性。现在,我们将深入探讨Java的访问权限控制。 1. 访问修饰符概述: ...

    java 使用委托控制权限

    在Java编程语言中,"委托"和"代理"是一种重要的设计模式,它们在权限控制方面发挥着关键作用。本文将深入探讨Java中的委托控制权限,主要聚焦于JDK代理(Proxy)的使用。 首先,我们要理解什么是委托。在软件工程中...

    理解java中的类的各种权限修饰符

    本文将详细探讨Java中的五种权限修饰符:`public`、`protected`、`default`(也称为包访问权限)、`private`以及`static`修饰类的情况,并通过实例来展示这些修饰符的具体应用。 #### 1. Public - **概述**: - `...

Global site tag (gtag.js) - Google Analytics