java如何父类不写方法体 子类选择重写父类方法
时间: 2023-09-03 14:12:53 浏览: 157
在 Java 中,如果父类中的方法没有被实现,那么子类就可以选择是否重写该方法。如果子类选择重写该方法,可以按照以下步骤进行:
1. 在子类中使用 `@Override` 注解来明确表示该方法是对父类中的方法进行重写。
2. 子类中的方法名、参数列表和返回类型必须与父类中的方法完全相同。
3. 在子类中编写方法体,实现对父类中方法的重写。
以下是一个简单的示例代码:
```java
class Animal {
public void speak() {
System.out.println("动物发出叫声");
}
}
class Dog extends Animal {
@Override
public void speak() {
System.out.println("汪汪汪");
}
}
```
在上面的示例中,父类 `Animal` 中的 `speak()` 方法并没有实现,而子类 `Dog` 选择重写了该方法,并实现了自己的 `speak()` 方法体。
相关问题
java对象会调用父类的方法还是子类对父类重写的方法
Java中,对象调用方法的时候会优先调用子类中对父类方法的重写(Override),如果子类没有重写该方法,则会调用父类的方法。这就是Java中的方法重写机制。
例如,如果有如下的代码:
```java
public class ParentClass {
public void print() {
System.out.println("I am ParentClass");
}
}
public class ChildClass extends ParentClass {
@Override
public void print() {
System.out.println("I am ChildClass");
}
}
public class Test {
public static void main(String[] args) {
ParentClass obj = new ChildClass();
obj.print();
}
}
```
当执行 `obj.print()` 时,会输出 "I am ChildClass",因为子类 `ChildClass` 重写了 `ParentClass` 的 `print()` 方法。
需要注意的是,如果想在子类中调用父类被重写的方法,可以使用 `super` 关键字来实现,例如:
```java
public class ChildClass extends ParentClass {
@Override
public void print() {
super.print(); // 调用父类的 print() 方法
System.out.println("I am ChildClass");
}
}
```
这样,在执行 `obj.print()` 的时候,会先输出 "I am ParentClass",再输出 "I am ChildClass"。
Java 父类构造器调用多个子类重写的方法,这些方法都会执行吗,还是自动找到某个子类的方法执行
当 Java 父类构造器调用多个子类重写的方法时,这些方法都不会执行。这是因为在 Java 中,子类的构造器必须在父类构造器执行完毕后才能被调用,因此在父类构造器中调用子类的方法时,子类的构造器还没有被调用,因此子类的方法也不能被执行。如果必须在父类构造器中调用子类的某个方法,可以将该方法定义为 final 类型,这样在子类中重写该方法时,编译器会发出警告。
阅读全文