Java 父类构造器调用多个子类重写的方法,这些方法都会执行吗,还是自动找到某个子类的方法执行
时间: 2024-02-26 20:54:45 浏览: 19
当 Java 父类构造器调用多个子类重写的方法时,这些方法都不会执行。这是因为在 Java 中,子类的构造器必须在父类构造器执行完毕后才能被调用,因此在父类构造器中调用子类的方法时,子类的构造器还没有被调用,因此子类的方法也不能被执行。如果必须在父类构造器中调用子类的某个方法,可以将该方法定义为 final 类型,这样在子类中重写该方法时,编译器会发出警告。
相关问题
说出继承后子类访问方法、变量、构造器的特点
继承后,子类可以访问父类中的方法和变量。子类可以重写父类的方法,即在子类中重新定义与父类相同名称的方法,并且可以根据需要修改方法的实现细节。子类还可以调用父类的构造器来初始化自己的实例。在调用父类构造器时,子类需要使用关键字 `super`,并且构造器的调用必须位于子类构造器的第一行。这样可以确保子类对象在创建时先执行父类的构造器,然后再执行自己的构造器。
java怎么父类声明对象,用子类构建器创建对象
在Java中,我们可以使用子类的构造函数来创建子类的对象。但是,如果我们希望将这个子类的对象当作父类的对象来使用,我们可以采用向上转型的方式,即使用父类的引用来引用子类的对象。
下面是一个示例代码:
```java
public class ParentClass {
public void print() {
System.out.println("This is ParentClass!");
}
}
public class ChildClass extends ParentClass {
@Override
public void print() {
System.out.println("This is ChildClass!");
}
}
public class Main {
public static void main(String[] args) {
// 使用子类的构造函数创建子类对象
ChildClass child = new ChildClass();
// 使用父类的引用来引用子类的对象
ParentClass parent = child;
parent.print(); // 调用子类的方法
}
}
```
在上面的代码中,我们首先创建了一个子类对象 `child`,然后使用父类的引用 `parent` 引用了这个子类对象。最后调用 `parent` 的 `print()` 方法时,实际上调用的是子类的 `print()` 方法,因为子类重写了父类的 `print()` 方法。