Java子类重写父类有参数的方法
时间: 2024-10-08 19:21:57 浏览: 23
在Java中,子类可以重写(override)父类中声明为虚方法(abstract method、final method 或者没有实现的方法)并且带参数的方法。这是实现多态的一种常见方式,也被称为方法覆盖。当子类继承了一个父类并想要提供自定义的行为时,通过重写父类方法可以实现。
以下是步骤:
1. 父类定义一个需要被重写的有参方法,可以是公共(public)、受保护(protected)或默认访问权限(package-private)。
```java
public class ParentClass {
public void parentMethod(int param) {
// 父类方法的实现
}
}
```
2. 子类继承该父类,并在其内部提供一个新的方法实现,通常保持相同的名称和参数列表,但是可能会有不同的逻辑或返回值类型(如果父类方法是void,子类可以改变返回类型)。
```java
public class ChildClass extends ParentClass {
@Override
public void parentMethod(int param) {
// 子类方法的实现
System.out.println("This is the child's implementation");
}
}
```
3. 当从子类实例上调用`parentMethod`时,会执行子类的版本,而不是父类的原始版本。
相关问题
Java子类重写父类同名方法
在Java中,子类重写父类同名方法是一种实现多态的方式,也称为方法覆盖(Method Overriding)。当子类有一个与父类同名、同参数列表并且返回类型相同的函数时,子类就实现了对父类方法的重写。这使得子类可以在保持公共接口不变的情况下,提供自定义的行为。
以下是一个简单的例子:
```java
class ParentClass {
public void printMessage() {
System.out.println("这是ParentClass的方法");
}
}
class ChildClass extends ParentClass {
// 子类重写了printMessage方法
@Override
public void printMessage() {
System.out.println("这是ChildClass重写后的消息");
}
}
public class Main {
public static void main(String[] args) {
ParentClass parent = new ParentClass(); // 创建父类实例
parent.printMessage(); // 输出 "这是ParentClass的方法"
ChildClass child = new ChildClass(); // 创建子类实例
child.printMessage(); // 输出 "这是ChildClass重写后的消息"
}
}
```
在这个例子中,当你通过`child`对象调用`printMessage()`时,实际上会执行`ChildClass`的版本,体现了多态性。
java子类重写父类方法易错点
Java中子类重写父类方法的时候,有几个易错点需要注意:
1. 方法名、参数列表和返回类型必须与父类方法一致:子类中重写的方法必须与父类方法具有相同的方法名、参数列表和返回类型。如果不一致,会导致编译错误。
2. 访问修饰符不能更严格:子类重写的方法的访问修饰符不能比父类方法更严格。例如,如果父类方法是public,那么子类方法可以是public或者protected,但不能是private。如果违反了这个规则,编译器会报错。
3. 子类方法不能抛出比父类方法更宽泛的异常:子类重写的方法不能抛出比父类方法更宽泛的异常。也就是说,子类方法可以抛出与父类方法相同的异常或者其子类异常,或者不抛出异常,但不能抛出父类方法没有声明的异常。如果违反了这个规则,编译器会报错。
4. 子类方法不能降低访问修饰符:子类重写的方法不能降低父类方法的访问修饰符。例如,父类方法是public,那么子类方法也必须是public,而不能是protected或者default。如果违反了这个规则,编译器会报错。
5. 子类方法不能使用final修饰符:子类重写的方法不能使用final修饰符。final修饰符用于限制方法的重写,如果在子类中使用final修饰方法,编译器会报错。
总结起来,子类重写父类方法需要遵守方法签名一致、访问修饰符不能更严格、不能抛出更宽泛的异常、不能降低访问修饰符、不能使用final修饰符这几个规则。如果不遵守这些规则,编译器会报错。
阅读全文