在Fruit构造函数中调用fryName方法,实际上是将调用委托给子Apple类的方法!
public class CallingParentMethodInInheritanceHierarchy {
abstract class Fruit {
String fruitName;
public Fruit(String fruitName) {
this.fruitName = fruitName;
/*
* o/p - Inside constructor - Child: Fruit name is - Apple
*/
System.out.println("Inside constructor - " + fruitName()); // doubt?
}
public String fruitName() {
return "Parent: Fruit name is - " + fruitName;
}
public abstract String type();
}
class Apple extends Fruit {
public Apple() {
super("Apple");
}
public String fruitName() {
/*
* To call the super class method, only way is -
*
* System.out.println(super.fruitName());
*/
return "Child: Fruit name is - " + fruitName;
}
@Override
public String type() {
return "AllSeasonsFruit";
}
}
public static void main(String[] args) {
Fruit fruit = new CallingParentMethodInInheritanceHierarchy().new Apple();
/*
* o/p - Child: Fruit name is - Apple
*/
System.out.println(fruit.fruitName());
}
}
这背后的主要尝试是,我试图调用父方法,而不使用简单的方式super。在子方法内调用fruitName()。
请帮帮我@第12行
因为这就是多态性的工作原理。子类可以重写任何非final的方法,父代码将无法区分两者之间的差异。这就是为什么非抽象非最终公共方法通常不被鼓励的原因。
这是多态性101。方法的最特定版本——即继承树中的最低版本——是在类层次结构中调用的。如果您根本没有重写frName()方法,那么将调用基类方法。
我有一个扩展了B类的a类。 A是这样定义的,它也覆盖了B的方法: B是这样定义的: 因此,如果我初始化A的一个对象,构造函数将调用调用方法doSomething()的超类之一。但哪一个会被处决?B的实现还是A中被重写的实现?
问题内容: 对不起任何较小的语法错误或其他错误,我正在使用Jitsi模块进行此操作,并且对Java不太熟悉,因此想确认正在发生的事情以及为什么以及如何对其进行修复。 使用按名称加载类方法创建类B的实例时,应用程序正在执行此操作: 在类B中调用重写的load() 初始化变量(根据调试器调用“私有字符串testString = null”),将其无效。 这是预期的Java行为吗?是什么原因造成的?它是
所以我在学习java继承,我遇到了一个我不知道如何解决的问题。 我要做的是从超类中调用一个子类构造函数。我不知道这是否有任何意义,但我会尝试用一个例子来解释我自己。 我为什么要这么做? 我希望能够主要不必处理智能手机。 我希望能够做到:
问题内容: //: c07:Sandwich.java // Order of constructor calls. // package c07; // import com.bruceeckel.simpletest.*; 此代码的输出是 由于类中的字段是按照声明的顺序创建的,为什么不这样做 在上面列表的顶部? 另外,在此代码中它打算做什么? 起初我以为这是一个匿名类,但看起来并不像它。它正在
这是一个更大的项目,所以我将简化结构,不包括这里涉及的所有代码,但我想知道这在概念上是否可行,以及我可能遇到的潜在障碍。 我从主类中得到了几个级别的子类,其中一个级别包含方法age()(从顶部超类重写),该方法调用useEnergy()。此类的直接子类重写age()。该类的直接子类需要重写useEnergy(),但被重写方法中的代码永远不会执行(通过System.out.printlns验证)。有
本文向大家介绍详解 Java继承关系下的构造方法调用,包括了详解 Java继承关系下的构造方法调用的使用技巧和注意事项,需要的朋友参考一下 详解 Java继承关系下的构造方法调用 在Java中创建一个类的对象时,如果该类存在父类,则先调用父类的构造方法,然后再调用子类的构造方法。如果父类没有定义构造方法,则调用编译器自动创建的不带参数的默认构造方法。如果父类定义了public的无参的构造方法,则在