温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java Protected 作用范围

发布时间:2025-11-02 02:49:04 来源:亿速云 阅读:100 作者:小樊 栏目:编程语言

在Java中,protected是一个访问修饰符,它用于控制类、变量、方法和构造函数的访问范围。当一个类的成员(如变量、方法或构造函数)被声明为protected时,它的访问范围受到限制,具体如下:

  1. 同一包内:在同一包内的其他类可以访问这个protected成员。

  2. 不同包的子类:在不同包中的子类可以访问这个protected成员,即使子类没有使用extends关键字继承父类,也可以通过继承关系访问。但是,如果子类位于不同的包中,并且没有继承父类,那么它将无法访问父类的protected成员。

需要注意的是,protected访问修饰符不允许不同包中的非子类访问该成员。这与public访问修饰符不同,public允许所有类访问。

下面是一个简单的例子来说明protected的作用范围:

// 文件名:Parent.java
package com.example.parent;

public class Parent {
    protected String protectedVar = "I am a protected variable";
    
    protected void protectedMethod() {
        System.out.println("I am a protected method");
    }
}

// 文件名:Child.java
package com.example.child;

import com.example.parent.Parent;

public class Child extends Parent {
    public void accessProtectedMembers() {
        System.out.println(protectedVar); // 可以访问,因为Child是Parent的子类
        protectedMethod(); // 可以访问,因为Child是Parent的子类
    }
}

// 文件名:SamePackageClass.java
package com.example.parent;

public class SamePackageClass {
    public void accessProtectedMembers(Parent parent) {
        System.out.println(parent.protectedVar); // 可以访问,因为SamePackageClass和Parent在同一包中
        parent.protectedMethod(); // 可以访问,因为SamePackageClass和Parent在同一包中
    }
}

// 文件名:DifferentPackageNonChildClass.java
package com.example.other;

import com.example.parent.Parent;

public class DifferentPackageNonChildClass {
    public void accessProtectedMembers(Parent parent) {
        // System.out.println(parent.protectedVar); // 编译错误,无法访问,因为DifferentPackageNonChildClass不是Parent的子类
        // parent.protectedMethod(); // 编译错误,无法访问,因为DifferentPackageNonChildClass不是Parent的子类
    }
}

在这个例子中,Parent类中的protectedVar和protectedMethod()只能在Child类和SamePackageClass类中访问,而不能在DifferentPackageNonChildClass类中访问。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手