封装:类的设计者把类设计成一个黑盒子,使用者只能看见类中定义的公共方法,而看不见方法的实现细节,也不能直接对类中的数据进行操作。
根据封装的原则,使用者可以访问类中的部分方法,但不能直接访问成员变量。
Java通过设置访问权限来实现类的封装。
访问修饰符允许的访问级别 如下图所示:
设置类的访问权限
在声明一个类时,可以不用权限修饰符,也可以用public设置类为公有的,不允许使用其他的权限修饰符。
package com.ez; /** * 访问修饰符测试类 访问严格级别从低到高 public-->protected-->default(nodecorate)-->private * 类中的数据称为成员变量,对数据进行的操作称为成员方法。类内部的构成,统称类的成员。 * @author 窗外赏雪(EZ编程网) */ public class AccessModifier { public void testPublic() { System.out.println("该类成员可被所有类的成员访问"); } /** * 不能被其他包的非子类访问,并且非静态成员只能通过子类实例来访问。 * 注意:非静态成员只能通过子类的实例访问。 */ protected void testProtected() { System.out.println("该类成员可以被其他包的子类实例访问"); } protected static void testStaticProtected(){ System.out.println("该类成员可以被其他包的子类访问"); } void testNoDecorate() { System.out.println("该类成员能被同一类中的其他成员、或同一包中的其他类访问"); } private void testPrivate() { System.out.println("该类成员只能被同一类中的其他成员访问"); } /** * private方法只能被自己类的成员访问 */ public static void main(String[] args) { AccessModifier am = new AccessModifier(); am.testPrivate(); am.testNoDecorate(); am.testProtected(); am.testPublic(); } }
同个包下的其他类
package com.ez; /** * protected类成员能被同一包下的类成员访问 * default类成员能被同一类中的其他成员、或同一包中的其他类访问 * @author 窗外赏雪(EZ编程网) */ public class AccessModifierTest { public static void main(String[] args) { AccessModifier am=new AccessModifier(); am.testNoDecorate(); am.testProtected(); am.testPublic(); } }
同个包下的子类
package com.ez; /** * protected类成员能被同一包下的类成员访问。 * default类成员能被同一类中的其他成员、或同一包中的其他类访问 * @author 窗外赏雪(EZ编程网) */ public class AccessModifierChildTest extends AccessModifier{ public static void main(String[] args) { AccessModifier am=new AccessModifier(); am.testNoDecorate(); am.testProtected(); am.testPublic(); } }
不同包下的其他类
package com.ez.other; import com.ez.AccessModifier; /** * protected不能被其他包的非子类访问,并且非静态成员只能通过子类对象来访问。 * default类成员不能被不同包中的其他类访问 * @author 窗外赏雪(EZ编程网) */ public class AccessModifierTest { public static void main(String[] args) { AccessModifier am=new AccessModifier(); am.testPublic(); } }
不同包下的子类
package com.ez.other; import com.ez.AccessModifier; /** * protected不能被其他包的非子类访问,并且非静态成员只能通过子类实例来访问。注意:是子类实例 * default类成员不能被不同包中的其他类访问 * @author 窗外赏雪(EZ编写网) */ public class AccessModifierChildTest extends AccessModifier { public static void main(String[] args) { AccessModifier am = new AccessModifier(); am.testPublic(); AccessModifierChildTest amc = new AccessModifierChildTest(); amc.testProtected(); } }
相关推荐
在C#编程语言中,访问修饰符是用来控制类、接口、结构、枚举以及它们的成员(如字段、方法、属性等)的可访问性的关键元素。这些修饰符定义了哪些代码可以访问特定的类型或成员,从而确保了代码的封装性和安全性。...
本文将详细探讨Java中的五种权限修饰符:`public`、`protected`、`default`(也称为包访问权限)、`private`以及`static`修饰类的情况,并通过实例来展示这些修饰符的具体应用。 #### 1. Public - **概述**: - `...
总结来说,C#的访问修饰符是实现封装和控制类成员访问权限的关键手段,它们在设计类和接口时起着至关重要的作用,帮助开发者构建安全、可维护的代码结构。了解并熟练掌握这些访问修饰符,是成为一名合格的C#程序员的...
- `package`(默认):如果省略访问修饰符,类只对同包内的其他类可见。 - `protected`:除了对同包内的类可见,还对所有子类可见,即使子类不在同一个包内。 - `private`:只有在定义它的类内部可以访问,是最...
- **定义**:`public`是访问修饰符的一种,表示该类可以在任何地方被访问。 - **应用场景**: - 当需要让其他类或程序集中的代码能够访问该类时。 - 当类作为公共API的一部分时,通常会使用`public`。 #### ...
继承与访问修饰符是面向对象编程中的核心概念,它们在定义类的结构和关系时起着至关重要的作用。本文将详细探讨这两个主题,以便更好地理解它们如何影响代码的可访问性和可扩展性。 首先,访问修饰符是用来控制类的...
Java语言中为了控制方法和成员变量的可见性和访问级别,定义了几种访问修饰符:private, protected, public, 和默认(未修饰)访问权限。这些修饰符决定了不同类之间的访问能力,以保证类的封装性和安全性。接下来,...
Java中的访问修饰符是编程中控制类、接口、方法和字段访问权限的关键元素。它们用于确定哪些代码可以访问特定的程序元素。以下是Java访问修饰符的详细解析: 1. **类的访问修饰符** - **public**:公共类修饰符,...
- **public**:成员对外公开,与类的public修饰符相似,允许任何访问。 - **protected**:成员对当前类及其派生类可见,用于封装的同时允许继承类访问。 - **private**:成员仅对当前类可见,是最严格的访问控制,...
深入分析 C# 封装和访问修饰符 C# 语言中,封装和访问修饰符是两个非常重要的概念,它们在面向对象程序设计中扮演着关键的角色。本文将详细介绍 C# 封装和访问修饰符的相关知识点,並对其进行深入分析。 封装 在...
java 访问权限修饰符详解 在 Java 语言中,访问权限修饰符是指用来限定类、成员变量和方法的可访问范围的关键字。...同时,访问权限修饰符也体现了面向对象编程的封装特性,帮助我们编写更加可靠和可维护的代码。
在C#编程语言中,访问修饰符是控制类、接口、结构、方法、属性、字段等成员的可访问性的重要工具。这些修饰符定义了它们的可见性,从而影响了其他代码可以如何使用它们。本篇文章将深入探讨C#中的访问修饰符,包括其...
Java修饰符是编程中至关重要的概念,它们用于定义类、接口、变量和方法的访问权限、行为和特性。本文将详细介绍Java中常见的修饰符及其用途。 1. **类的修饰符** - **public**: 公共访问控制符,允许任何地方的...
它们主要分为三类:访问修饰符、类修饰符和方法/变量修饰符。这些修饰符在编写类、接口、方法和变量时起到至关重要的作用,确保代码的封装性、安全性和可维护性。 1. 访问修饰符: - `private`:私有访问修饰符,...
- **描述**:当没有明确指定访问修饰符时,默认访问级别(即没有`public`、`protected`或`private`前缀)被称为`default`。这种情况下,成员仅对同一包内的类可见。 - **用途**:`default`通常用于包内协作,促进同...
1. **Public**: 公共访问修饰符,允许任何代码在任何位置访问该类。无论是在同一程序集还是不同程序集,只要拥有引用,都能访问。 2. **Internal**: 内部访问修饰符,仅限于在同一程序集内部访问。外部程序集无法...
第20天,对构造器以及this关键字和封装继承和访问修饰符的学习