Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.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_Inheritance - Fatal编程技术网

Java 为什么这段代码打印的是超类的值而不是子类的值

Java 为什么这段代码打印的是超类的值而不是子类的值,java,inheritance,Java,Inheritance,产出:10 它如何基于上述代码从基类打印值。B已经从a继承了a。做inta=20再次隐藏从a继承的a。这意味着如果x的编译时间为B,则形式为x.a的表达式将仅计算为20 要获得预期行为,可以在B的构造函数中重置a: class A{ int a = 10; } class B extends A{ int a= 20; } public class C { public static void main(String [] args){ A a =

产出:10


它如何基于上述代码从基类打印值。

B
已经从
a
继承了
a
。做
inta=20
再次隐藏从
a
继承的
a
。这意味着如果
x
的编译时间为
B
,则形式为
x.a
的表达式将仅计算为20

要获得预期行为,可以在
B
的构造函数中重置
a

class A{
    int a = 10;
}

class B extends A{
    int a= 20;
}

public class C {
    public static void main(String [] args){
         A a = new B();
         System.out.println(a.a);       
        }
}

B
已从
a
继承
a
。做
inta=20
再次隐藏从
a
继承的
a
。这意味着如果
x
的编译时间为
B
,则形式为
x.a
的表达式将仅计算为20

要获得预期行为,可以在
B
的构造函数中重置
a

class A{
    int a = 10;
}

class B extends A{
    int a= 20;
}

public class C {
    public static void main(String [] args){
         A a = new B();
         System.out.println(a.a);       
        }
}

当您在一个子类中创建一个同名变量时,就像您在这里所做的那样,它被称为隐藏。生成的子类现在实际上具有这两个属性

请参考下图


当您在子类中创建一个同名变量时,就像您在这里所做的那样,它被称为隐藏。生成的子类现在实际上具有这两个属性

请参考下图


因为被重写的概念只允许在OOPs中使用非变量的方法。你可以用超级关键字隐藏变量。PyMyHypistic只存在函数,而不是变量。如果答案帮助你,请考虑通过点击复选来接受你认为最好的答案。因为重写的概念只允许在OOPs中使用非变量的方法。你可以用超级关键字隐藏变量。PyMyHypistic只存在函数,而不是变量。如果答案帮助你,请考虑通过点击复选来接受你认为最好的答案。或者在当前场景中,确保将对象强制转换为
B
类型,然后访问其变量,如
(B)a)。a
。。。只是它会恶化可读性和可访问性。或者在当前场景中,确保将对象强制转换为
B
类型,然后访问其变量,如
(B)a)。a
。。。只是它会恶化可读性和可访问性。