当前位置:  开发笔记 > 编程语言 > 正文

Java受保护的访问不起作用

如何解决《Java受保护的访问不起作用》经验,为你挑选了4个好方法。

在java中,有三种访问级别:

公众 - 对世界开放

私人 - 仅向全班开放

受保护 - 仅对类及其子类(继承)打开.

那么为什么java编译器允许这种情况发生呢?

TestBlah.java:

public class TestBlah {

    public static void main(String[] args) {
        Blah a = new Blah("Blah");
        Bloo b = new Bloo("Bloo");
        System.out.println(a.getMessage());
        System.out.println(b.getMessage()); //Works
        System.out.println(a.testing);
        System.out.println(b.testing); //Works
    }
}

Blah.java:

public class Blah {
    protected String message;

    public Blah(String msg) {
        this.message = msg;
    }

    protected String getMessage(){
        return(this.message);
    }   
}

Bloo.java:

public class Bloo extends Blah {
    public Bloo(String testing) {
        super(testing);
    }
}

OscarRyz.. 13

实际上它应该是:

仅打开同一个包上的类及其子类(继承)

这就是为什么



1> OscarRyz..:

实际上它应该是:

仅打开同一个包上的类及其子类(继承)

这就是为什么



2> Lawrence Dol..:

因为protected表示同一个包中的子类其他类.

当省略修饰符时,实际上存在第四个"默认"访问级别,它提供对同一包中其他类的访问.

protected默认和public访问之间也是如此.



3> Bob Cross..:

更具体地说,你期望protected像C++一样工作.

但是,在Java中,它具有不同的含义.在Java中,类(显然)可以使用受保护的方法,同一个包中的所有其他类以及此类的任何子类.除非他们将这个原始类子类化,否则其他包中的类将无法访问.

有关继承标记的更多具体信息,请参阅此类似问题.

就个人而言,我几乎从未使用过protected.我开发应用程序而不是框架,所以我更有可能定义public方法,private数据,并且经常将我的整个类标记为final.



4> Julien Chast..:

实际上有四种访问级别:"公共","受保护","私有"和默认也称为包私有或包受保护.默认值限制包的可访问性.默认是非常有用的,我经常使用它.

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有