java - 为什么这个程序打印25? (Java继承)

标签 java inheritance

在这个程序中

class a
{
     int a=25;
    public void aa()
    {
        System.out.println(a);  
    }

}
class b extends a
{
    int a=2;
    public static void main(String[] args) {
        b x=new b();
        x.aa();

    }
}

为什么“x.aa()”打印25,为什么不打印2?,背后的原因是什么?

class a
{
     int a=25;
    public void aa()
    {
        System.out.println(a);  
        b();
    }
    public void b()
    {
        System.out.println("this should print");
    }

}
class b extends a
{
    int a=2;
    public static void main(String[] args) {
        b x=new b();
        x.aa();

    }
    public void b()
    {
        System.out.println("this should not print");
    }
}

如果我们考虑上面的输出,那么上面的 b() 的输出应该再次打印“this should print”,但我们从 sublcas 获得输出“this should not print”

最佳答案

b类继承了A类,所以当你调用x.aa时,它调用的是a类的方法aa。 a 类的成员 a 初始化为 25,因此打印 25。a 类不知道 b 类的成员 a。

关于java - 为什么这个程序打印25? (Java继承),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26458756/

相关文章:

c++ - C++派生类访问基类的好友运算符

c++ - 创建抽象包装迭代器

javascript - 如何扩展谷歌地图类?

java - 如何从年月日中获取日期对象?

java - 如何获取数据层的ServletContext对象?

java - 如何简化大量的nextInt/nextDouble?

java - 在 spring 中创建异步事件

java - 信任库是否需要子 CA 证书?

c++ - this-> 是否必须从派生类访问 Base<T> 标识符?

java - Hibernate注解继承OneToMany Placement