JAVA中protected的作用

JAVA中protected的作用

2010-11-25 09:06 505962973  |  浏览 141120 次
  java
2010-11-25 09:15 提问者采纳
1、public:public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用 

     2、private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有财产神圣不可侵犯嘛,即便是子女,朋友,都不可以使用。 

     3、protected:protected对于子女、朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private。 

         作用域       当前类    同一package   子孙类     其他package 

           public        √         √             √           √ 

          protected     √          √             √           × 

          friendly      √          √             ×           × 

          private       √          ×             ×           ×
提问者评价
谢谢
评论(56)  |  1075  92

scmsc | 五级 采纳率29%

擅长: JAVA相关 教育/科学 数据库DB

Java 中,`protected` 是一种访问修饰符,用于控制类成员(变量、方法和构造方法)的可见性和可访问性。它比 `default`(默认包访问权限)更宽松,同时又比 `public` 更加受限制。`protected` 修饰符允许子类访问父类中的成员,即使这些子类不在同一个包中。 ### 可见性范围 - **同一包内**:任何类都可以访问被 `protected` 修饰的成员。 - **不同包但为子类**:如果一个类是另一个类的子类,并且位于不同的包中,那么它可以访问父类中被 `protected` 修饰的成员[^1]。 ### 使用场景 - 当你希望某个类的成员能够被其子类访问,而不仅仅是同一包内的其他类时。 - 在设计需要被继承的类时,为了提供一定的封装性同时也保持灵活性,允许子类扩展并访问特定成员。 - 通常用于定义那些应该对继承者开放但对外部世界隐藏的方法或变量。 ### 示例代码 ```java // 父类定义在一个包中,比如 com.example.parent package com.example.parent; public class ParentClass { protected String name; // 被protected修饰的字段 protected void displayName() { // 被protected修饰的方法 System.out.println("Name: " + name); } } // 子类定义在另一个包中,比如 com.example.child package com.example.child; import com.example.parent.ParentClass; public class ChildClass extends ParentClass { public void accessProtectedMembers() { name = "Child"; // 可以直接访问name字段 displayName(); // 可以直接调用displayName方法 } } ``` 在这个例子中,`ChildClass` 继承自 `ParentClass` 并且可以访问 `name` 字段和 `displayName()` 方法,尽管它们位于不同的包中。这是因为 `protected` 修饰符允许跨包的子类访问这些成员。 ### 注意事项 - 如果不使用 `protected` 而是使用 `private`,则只有定义该成员的类内部才能访问。 - 如果不指定任何访问级别,则会采用默认的包级私有访问权限,这意味着只有相同包中的类可以访问。 - `protected` 不适用于顶级类(top-level classes),只能应用于类的成员。 通过合理利用 `protected` 访问修饰符,开发者可以在保证一定程度封装性的前提下,实现类之间的有效协作与继承关系。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值