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

为什么我无法使用父类型访问子对象方法

毋举
2023-03-14
问题内容

对象a2的类型为A,但引用了类C的对象。因此,a2应该能够访问m3()。但是,为什么不发生呢?如果在类A中定义了m3()方法,则代码可以正常运行

class A {

   int var = 7;

   void m1() {
      System.out.println("A's m1 ,");
   }

   void m2() {
      System.out.println("A's m2 ,");
   }
}

class B extends A {

   void m1() {
      System.out.println("B's m1 ,");
   }
}

class C extends B {

   void m3() {
      System.out.println("c's m3 ," + (var + 6));
   }
}

class Mixed {

   public static void main(String[] args) {
      A a = new A();
      B b = new B();
      C c = new C();
      A a2 = new C();
      a2.m1();
      a2.m2();
      a2.m3();
   }
}

问题答案:
A a2=new C();

这意味着您只能访问Class的成员和Class的A实现(C如果有的话)。

现在m3不是的成员A。清楚吗?



 类似资料:
  • 既然这个对象(在标题中说明)可以调用子类中的重写方法,为什么它不能调用子类的其他方法?我需要尽可能详细的回答,比如内存组织,JVM中的内部逻辑等。 下面的代码会让你清楚地理解我的问题。

  • 我是java初学者,我不理解这行代码是什么意思 平均值。为什么不能访问自己的方法。请详细解释如果类A正在实例化,那么为什么它的方法不可访问。

  • 无法使用下面的行从子类访问方法, 假设我在子类中有一个方法,而父类中没有相同的方法。在这种情况下,我们无法使用上述代码行访问子类方法print()。但是请注意,如果我们在父类中有相同的方法,那么我们可以使用上面的代码访问它。 可能没有这样的现实生活场景,但试图理解为什么我无法访问子类使用类型为父的子对象,如果我们没有在父类中定义相同的方法。 示例代码如下: 更多解释——如果我在父类中定义了方法,那

  • 我有以下情况: 在执行代码时,输出为:5。 如何通过父类方法访问子类(B)变量(x)? 这是否可以在不重写print()方法的情况下完成(即在B中取消注释)? [这很重要,因为在重写时,我们将不得不再次重写print()方法的整个代码] 编辑过 进一步澄清:- 问题的动机是使用父类方法中的子类私有变量的值。这不需要更改父类私有变量的值来获得所需的结果 (感谢大家的时间和帮助)

  • 我在学习Java,同时试图理解继承。我不明白为什么子类walk()中重写的方法执行了,而另一个xyz()方法却没有执行。 我的问题是,如果下面的方法调用工作正常,并调用士兵方法walk,

  • 问题内容: 我正在向我的朋友解释OOP。我无法回答这个问题。(我有多可耻? 我只是想逃避,因为OOP描绘了现实世界。在现实世界中,父母可以容纳孩子,但孩子不能容纳父母。OOP也是如此。我知道它很愚蠢。:P 为什么此陈述无效? 因为aChild的成员是aParent成员的超集。那为什么孩子不能容纳父母。 问题答案: 正是因为aChild是aParent功能的超集。你可以写: 因为每只狐狸都是动物。但