Java关键字系列(public,protected,private)

本文详细解释了Java中public、protected和private修饰符的作用及区别。包括它们如何控制类成员(如字段和方法)的可见性和访问级别,以及这些修饰符如何应用于类本身。
public、protected和private做为java访问权限修饰词而使用。
首先要明白,java中的每个定义(定义类、字段和方法)都有特定的访问权限。如果不加修饰词,则默认为包访问权限,即包内的类对其有访问权限。

对于类成员(字段和方法)的访问权限来说,
public:所有类都可访问。
protected:继承访问权限。基类通过protected把访问权限赋予派生类而不是所有类,
另外,protected也提供包访问权限,也就是说,相同包内的其他类可以访问protected元素。
private:除了包含这个成员的类外,其他任何类都无法访问这个成员。

对于类访问权限来说,
仅有两个选择:包访问权限或public。
类既不可以是private的,也不可以是protected的,但内部类是个特例,一个内部类可以是private或protected的。  
Java中,访问修饰符(Access Modifiers)用于控制类、方法和变量的可见性和可访问性。常见的访问修饰符包括 `protected`、`public` 和 `private`,它们分别提供了不同的访问级别。 ### protected 关键键字的特点 - **同一包内的访问**:如果一个类A包含一个 `protected` 方法AA,并且另一个类与类A位于同一个包内,则该类可以访问类A中的 `protected` 方法AA。 - **跨包继承访问**:如果类B是类A的子类,并且不在类A所在的包中,那么类B仍然可以通过继承访问类A的 `protected` 成员。然而,类B内部的代码不能直接通过类A的实例访问其 `protected` 方法,除非这些方法已经被继承下来[^1]。 例如: ```java package com.example.packageA; public class ClassA { protected void methodA() { System.out.println("This is a protected method."); } } // 在另一个包中 package com.example.packageB; import com.example.packageA.ClassA; public class ClassB extends ClassA { public void accessProtectedMethod() { // 可以直接调用从ClassA继承来的methodA() methodA(); // 合法,因为methodA是protected并且ClassB是ClassA的子类 } } ``` ### public 关键字的特点 - **无限制访问**:使用 `public` 修饰的方法或变量可以在任何地方被访问,不受包或继承关系的限制。这是最开放的访问级别。 - **示例**:一个公共方法可以被不同包中的任何类访问,只要该类能够引用到定义此方法的类。 ### private 关键字的特点 - **完全隐藏成员**:使用 `private` 修饰的方法或变量只能在其声明的类内部访问,对外部完全不可见。 - **封装性**:这种修饰符通常用于实现数据封装,确保类的内部状态不会被外部修改。 ### 访问权限对比总结 | 访问级别 | 同一包内 | 不同包但为子类 | 其他情况 | |----------|-----------|------------------|------------| | `private` | 否 | 否 | 否 | | 默认 (default) | 是 | 否 | 否 | | `protected` | 是 | 是 | 否 | | `public` | 是 | 是 | 是 | 通过合理使用这些访问修饰符,可以有效地控制类成员的可见性和可访问性,从而提高代码的安全性和维护性。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值