`
0428loveyu
  • 浏览: 30913 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

Java访问控制符总结

 
阅读更多

Java中的控制符,用来控制其他类能否访问Java中的某一方法、变量,即控制java类、方法、变量的可见性、可访问性,从而实现数据封装。Java中有两个级别的访问控制符。

  • 类级别:控制其他类能否使用该类。有2中类型: public 和 package-private
  • 成员级别:控制某一方法、变量的访问权限。有4种类型: public , protected, package-private, private。
首先解释一下“使用”一词到底是什么意思?对于方法,很显然就是调用;对于变量,则是指访问或者修改;而对于类,则是指继承、实例化等,也就是能否在import中导入。
需要注意的事,方法和变量的访问控制实在类级别访问的基础之后增强的,也就是先经过类级别这层控制之后,再加上成员级别的控制。通过这两个级别的权限控制,可以对Java中的类、方法、变量进行精确控制,进而实现我们想要的任何程度的数据封装。下面分别介绍着两个级别的访问控制符。

类级别:

一个类可以被声明为public,在这种情况下,这个类可以被任何其他类导入使用(但是具体到某个方法或者变量时,需考虑第二层成员级别控制)。
如果类没有控制访问描述符,则表示默认,也就是包私有(package-private),这时该类除了能在本类中使用外,还能被同一个包中的其他类使用。注意包的概念,不包括子包。
备注:如果是内部类,可以使用private修饰符。下面的讨论都针对一般类

成员级别:

成员级别可以使用类级别中的public, package-private,其意义与类级别完全一样。除此之外还可以使用private和protected。但是要注意,默认方式不能用于接口变量和方法。
private:如果某个成员被private修饰,则它只能在它所在的类中被使用(The private modifier specifies that the member can only be accessed in its own class.)。
protected: 如果用protected修饰,除了能被同一个包中的其他类(无论是否继承自该类)使用之外,还能被其他包中的子类使用。(The protected modifier specifies that the member can only be accessed within its own package (as with package-private) and,in addition, by asubclass of its class in another package.)注意接口中的变量和方法一样不能使用protected修饰符。

总结如下表:


例如,有两个包one和two,四个类如下图所示



对于Alpha这个类中的成员,其他类的访问权限如下表:



继承与访问修饰符:

继承中,子类和父类的修饰符需要遵守一些规则,具体如下:

父类方法为public,子类也必须为public
父类为protected,子类必须为protected或者public
父类中的private方法没有继承的说法。

子类继承自父类,所以父类中提供的方法接口,子类都必须提供。否则,如果我们将一个子类的对象赋给父类对象,就会出问题。如下:
public class Animal {
  public String getName() { return this.name; }
}

public class Lion extends Animal {
  private String getName() { return this.name; }
}
Animal lion = new Lion();
System.out.println( lion.getName() );//invalid

此时,lion声明为Animal类型,但它的实际类型是Lion。Animal类型提供了公开的getName接口,而子类却变成private,不行!!

一个疑惑

假设现在我们将一个类声明为package-private,也就是这个类只能被跟它在同一个包的类使用。那么在这个类当中,一个声明为protected或者public的方法似乎已经不是很有意义,因为默认的package-private就已经足够了,其他包中的类不能使用这个类,更不用说使用方法了,那么在实际开发中呢,到底什么样的实践才是最佳的,有待进一步研究。

(转载请注明出处)




分享到:
评论

相关推荐

    Java修饰符总结

    Java修饰符主要分为两大类:访问控制符和非访问控制符。其中,访问控制符用于控制类、方法和变量的可访问性范围,而非访问控制符则用于提供额外的功能,如抽象、静态、同步等。 #### 访问控制符 访问控制符包括`...

    【后端】java基础(5.3)java高级基础之java的修饰符——访问控制符

    总结一下,Java的访问控制符是控制代码封装性和安全性的关键工具。选择合适的访问控制符能够确保数据的隐私,同时允许必要的协作。在设计类时,通常建议将数据成员设为私有(private),然后提供公共方法(getter和...

    继承和接口和java访问权限修饰符总结.doc

    继承和接口和java访问权限修饰符总结 本文总结了 Java 中的继承、接口和访问权限修饰符的概念和使用。继承是 Java 中的一种机制,允许子类继承父类的属性和方法,並且可以对父类的方法进行重写或重载。动态绑定是指...

    针对Java中的修饰符总结

    Java中的修饰符总结 Java中的修饰符可以分为两大类:访问修饰限定符和非访问修饰限定符。 访问修饰限定符 访问修饰限定符用于控制类、方法、变量的访问权限。Java中的访问修饰限定符有四种:public、private、...

    java修饰符总结

    下面是对Java修饰符的详细总结: 1. **类(class)可见性修饰符**: - `public`:类对所有类都是可见的,无论是否在同一包内,可以被导入。 - 缺省(无修饰符):类只对同一包内的类可见,其他包无法直接访问,但...

    java知识体系总结

    Java知识体系总结 Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现已被Oracle公司收购)于1995年推出。它以其“一次编写,到处运行”的特性闻名,适用于开发跨平台的应用程序,包括桌面应用、企业...

    JAVA修饰符总结.pdf

    ### Java修饰符总结 #### 一、概述 Java是一种广泛使用的面向对象编程语言,它具有简单、健壮、面向对象和平台无关等特性。在Java中,为了更好地控制类、方法、变量等成员的访问权限以及行为特征,引入了多种修饰...

    Java四种访问控制修饰符知识点总结

    Java四种访问控制修饰符知识点总结 Java是一种面向对象的编程语言,在Java中,访问控制修饰符是用来控制类、变量、方法的访问权限的。Java提供了四种访问控制修饰符:public、protected、private、default(默认为...

    继承和接口和java访问权限修饰符总结.pdf

    Java提供了四种访问级别来控制类、方法和字段的可见性。 1. **public**: - 公共的,可以在任何地方被访问。 2. **protected**: - 保护的,可以在同一包内访问,以及不同包的子类中访问。 3. **private**: -...

    Java操作符总结-动力节点共20页.pdf.zip

    Java编程语言中的操作符是程序设计中的重要组成部分,它们用于执行特定的数学或逻辑运算,帮助我们构建复杂的表达式和控制程序流程。本篇总结主要围绕Java中的各种操作符进行详细阐述,旨在帮助开发者深入理解并熟练...

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

    正确地使用它们可以帮助开发者更好地管理代码的可见性和访问控制,从而构建出更安全、更易于维护的应用程序。需要注意的是,在实际开发过程中,应根据具体的需求选择合适的权限修饰符,以达到最佳的代码组织效果。

    java 基础知识总结(经典)

    5. **访问修饰符**:public、private、protected和默认修饰符决定了类、方法和变量的可见性。 6. **异常处理**:Java的异常处理机制通过try-catch-finally语句块来捕获和处理运行时错误,提高程序的健壮性。 7. **...

    Java详细总结(精辟版++)

    Java 中有多种关键字,包括数据类型、流程控制、修饰符、动作和保留字等。Java 运算符和 C/C++ 的运算符类似,功能也类似,但也有不同,Java 除了支持 C/C++ 中已有的位运算符 (&, |, ~, ^, , >>) 之外,还支持无...

    java oop总结-编程程序

    在 Java 中,通过访问控制符(如 private)来实现封装。 - 通常会提供 getter 和 setter 方法来访问和修改私有成员变量。 #### 六、继承 - 继承是 Java 中非常重要的一个特性,它允许子类继承父类的属性和方法。 -...

    JAVA基础知识精华总结

    通过访问修饰符(public, private, protected)来控制访问权限。 2. 继承(Inheritance):子类可以继承父类的属性和方法,实现代码的复用。Java只支持单继承,但可以通过接口实现多继承的效果。 3. 多态...

    Java 学习基本知识总结

    - **封装性**:将对象的状态信息(属性)和行为(方法)封装起来,通过访问控制修饰符(如`private`、`protected`、`public`)限制对类成员的访问。 - **继承性**:允许子类继承父类的属性和方法,支持代码重用。 ...

    黑马程序员入学Java精华总结

    ### 黑马程序员入学Java精华总结 #### 一、Java概述与基础知识 1. **何为编程?** - 编程是指通过编写计算机能够理解的指令来解决问题或完成特定任务的过程。这些指令通常被组织成算法,并使用某种编程语言实现。...

Global site tag (gtag.js) - Google Analytics