当前位置: 首页 > 面试题库 >

访问隐藏在第三扩展类中的间接超类变量

刘承悦
2023-03-14
问题内容

假设我有如下代码:

    class A {
    int a = 1; 
    }

    class B extends A {
    int a = 2; 
    }

    class C extends B {
    int a = 3;

    void print_it() {
    int a = 4;  // Local variable "a" to the " print_it " method

    System.out.println(a);       //Should be 4

    System.out.println(this.a);  //Should be 3

    System.out.println(super.a); //Should be 2

    System.out.println("HOW DO I PRINT \" a \" OF THE \" CLASS A      \" ");      //I need to print 1  
    }

    public static void main(String[] argue) {
    C obj = new C();               
    obj.print_it();
    } 
    }

我如何访问间接继承到“类C”的“类A”的“ a”。我知道我可以创建“类A”的对象,也知道可以在“类B”中创建方法以返回“ super.a”(“ A类”的“
a”变量),当然,如果它是静态的,我可以像“ Aa”一样访问它。

如果还有其他直接访问它的方法,请赐教。

(提前致谢)。


问题答案:

强制转换为A,然后访问变量:

((A)this).a


 类似资料:
  • 作为一种学习体验,我试图在C语言中实现简单的类继承,以及其他OOP特性。 到目前为止,我已经能够从外部上下文中正确隐藏类的“私有”函数和属性。 让我们把Point看作一个简单的类示例。它由三个模块组成: 平民的h类 这基本上是Point的公共接口,它还定义了引用另一个模块中声明的结构的类型Point,隐藏其属性。 保护 它承载着实际的结构定义,还可以包含只有通过内置类才能访问的函数的原型。 然后是

  • 这不是直截了当的问题。在我的例子中,外部类变量和内部类setter方法的参数名称是相同的。比如: 现在我不能用初始化外部类实例变量p,因为它指示内部类。同样,我不能执行会出现错误。现在,我如何分配外部p,使内部类方法的参数与名称p相同?

  • 问题内容: 我想对此进行一些讨论,但无法推断出我的情况的答案。仍然需要帮助。 这是我的代码: 在上面的示例中,下面的一些定义似乎令人困惑: 问题: 为什么我不能从子类实例(对象)访问受保护的成员()? 问题答案: 作为声明类的子类的其他包中的类只能访问其自己的继承成员。 …但不是其他对象的继承成员。

  • 我的子类是,我需要在我的超类中使用字段和。我知道如何在子类中使用超类变量,但我必须学会如何做相反的事情?谢谢。

  • 问题内容: 我想知道为什么Java对于具有相同名称的实例变量的超类和子类具有这种奇怪的行为。 假设我们有以下类定义: 通过这样做,我们应该隐藏了超类的变量。如果我们没有明确指定的方式来访问的通过电话,那么我们就应该永远无法获得一个孩子的一个实例。 但是,当我们进行强制转换时,此隐藏机制将中断: 这不是完全避开整个野外躲藏点吗?如果是这种情况,那么这是否会使该想法完全没有用? 在子类中,不能用其简单

  • 问题内容: 我正在尝试隐藏.php文件扩展名,但由于某种原因无法使其正常工作。我最近的尝试是: 我尝试了许多在网上找到的各种代码变体,但仍然没有运气。.htaccess文件位于根目录中。 问题答案: 我用了这个: