Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么这段代码是错误的,Java简单地说是错误的?_Java - Fatal编程技术网

为什么这段代码是错误的,Java简单地说是错误的?

为什么这段代码是错误的,Java简单地说是错误的?,java,Java,我现在简单地读了Java,我遇到了一个关于Java的问题。这个例子来自这本书。见: e、 g: 作者的意思是,因为B的实例不能访问A的任意实例。 如果我们像第二个那样更改代码,那么编译器会很高兴,因为相同类型的实例总是可以看到 相互保护的领域。 我不明白作者的意思,那到底是什么?B扩展了A。 x在A中受保护。 所以B可以访问B中的x 但是,B不能访问A中的x(不是B) 考虑一个扩展了a的类C 你能看到B不能访问C的x的原因(面向对象的原则)吗不是有效的导入语句。这已经错了…保护字符串x!=受保护

我现在简单地读了Java,我遇到了一个关于Java的问题。这个例子来自这本书。见: e、 g:

作者的意思是,因为B的实例不能访问A的任意实例。 如果我们像第二个那样更改代码,那么编译器会很高兴,因为相同类型的实例总是可以看到 相互保护的领域。 我不明白作者的意思,那到底是什么?

B扩展了A。 x在A中受保护。 所以B可以访问B中的x

但是,B不能访问A中的x(不是B)

考虑一个扩展了a的类C


你能看到B不能访问C的x的原因(面向对象的原则)吗不是有效的导入语句。这已经错了…
保护字符串x!=<代码>受保护字符串x
您是否混淆了
私有
受保护
?如果某些内容不清楚,您应该指定哪些内容不清楚。他只是说你不能在包含受保护变量的类之外访问受保护变量。@Jeroenvanevel的问题是:为什么在getX()方法签名中,我不能写下getX(a){…a.name…},但是getX(B){…B.name…}是正确的?否决票是怎么回事?
package de;
public class A
{
    protected String x;
}

package uk;
import de.*;

class B extends A 
{
//First One
    public String getX(A a)
    {
        return "getX works" + a.x;//ERROR: x has protected access in A
    }  
//Second One
    public String getX(B b)
    {
        return "getX works" + b.x; // WORKS!
    }  

}