封装:类的设计者把类设计成一个黑盒子,使用者只能看见类中定义的公共方法,而看不见方法的实现细节,也不能直接对类中的数据进行操作。
根据封装的原则,使用者可以访问类中的部分方法,但不能直接访问成员变量。
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#编程语言中,访问修饰符是用来控制类、接口、结构、枚举以及它们的成员(如字段、方法、属性等)的可访问性的关键元素。这些修饰符定义了哪些代码可以访问特定的类型或成员,从而确保了代码的封装性和安全性。...
| 访问修饰符 | 同类 | 同程序集子类 | 不同程序集子类 | 同程序集其他类 | 不同程序集 | |------------|------|-------------|---------------|----------------|------------| | public | √ | √ | √ | √ | × ...
本文将详细探讨Java中的五种权限修饰符:`public`、`protected`、`default`(也称为包访问权限)、`private`以及`static`修饰类的情况,并通过实例来展示这些修饰符的具体应用。 #### 1. Public - **概述**: - `...
总结来说,C#的访问修饰符是实现封装和控制类成员访问权限的关键手段,它们在设计类和接口时起着至关重要的作用,帮助开发者构建安全、可维护的代码结构。了解并熟练掌握这些访问修饰符,是成为一名合格的C#程序员的...
- `package`(默认):如果省略访问修饰符,类只对同包内的其他类可见。 - `protected`:除了对同包内的类可见,还对所有子类可见,即使子类不在同一个包内。 - `private`:只有在定义它的类内部可以访问,是最...
- **定义**:`public`是访问修饰符的一种,表示该类可以在任何地方被访问。 - **应用场景**: - 当需要让其他类或程序集中的代码能够访问该类时。 - 当类作为公共API的一部分时,通常会使用`public`。 #### ...
继承与访问修饰符是面向对象编程中的核心概念,它们在定义类的结构和关系时起着至关重要的作用。本文将详细探讨这两个主题,以便更好地理解它们如何影响代码的可访问性和可扩展性。 首先,访问修饰符是用来控制类的...
Java语言中为了控制方法和成员变量的可见性和访问级别,定义了几种访问修饰符:private, protected, public, 和默认(未修饰)访问权限。这些修饰符决定了不同类之间的访问能力,以保证类的封装性和安全性。接下来,...
访问控制修饰符即为实现封装的一种机制,通过它们来控制类、方法和变量的访问级别。 public修饰符是Java中访问权限最高的修饰符,它允许变量、方法和类在任何地方被访问,无论是同一包内还是不同包内的其他类。 ...
这意味着一个类、方法或变量如果没有明确指定访问修饰符,它就只能在同一个包(package)中的其他类中被访问。这种访问级别有利于实现同一包内类之间的松耦合和封装。 4. public修饰符定义了公共访问级别,它是访问...
Java中的访问修饰符是编程中控制类、接口、方法和字段访问权限的关键元素。它们用于确定哪些代码可以访问特定的程序元素。以下是Java访问修饰符的详细解析: 1. **类的访问修饰符** - **public**:公共类修饰符,...
- **public**:成员对外公开,与类的public修饰符相似,允许任何访问。 - **protected**:成员对当前类及其派生类可见,用于封装的同时允许继承类访问。 - **private**:成员仅对当前类可见,是最严格的访问控制,...
深入分析 C# 封装和访问修饰符 C# 语言中,封装和访问修饰符是两个非常重要的概念,它们在面向对象程序设计中扮演着关键的角色。本文将详细介绍 C# 封装和访问修饰符的相关知识点,並对其进行深入分析。 封装 在...
java 访问权限修饰符详解 在 Java 语言中,访问权限修饰符是指用来限定类、成员变量和方法的可访问范围的关键字。...同时,访问权限修饰符也体现了面向对象编程的封装特性,帮助我们编写更加可靠和可维护的代码。
封装和访问控制修饰符是面向对象编程的基石之一,通过上述示例我们可以看到,在实现封装的同时,合理安排访问控制修饰符,可以有效地控制类的开放程度,实现模块化编程,这在大型软件项目中尤为重要。通过封装,使得...
如果一个类、接口、变量或方法没有使用任何访问修饰符,则其访问级别即为包内可见。 4. private:私有的,只允许被定义它的类自身访问,它的子类或者同一个包中的其他类都无法直接访问。 对于封装而言,使用...
在C#编程语言中,访问修饰符是控制类、接口、结构、方法、属性、字段等成员的可访问性的重要工具。这些修饰符定义了它们的可见性,从而影响了其他代码可以如何使用它们。本篇文章将深入探讨C#中的访问修饰符,包括其...