分别对上三种方法举例
时间: 2024-09-10 13:16:48 浏览: 47
权重的三种计算方法举例.pdf
方法重载(Overloading)是指在同一个类中可以创建多个同名的方法,但这些方法的参数列表必须不同(参数的类型、个数或顺序至少有一项不同)。这样,编译器可以根据参数列表的不同来区分它们,从而执行不同的操作。
举例:
```java
public class Calculator {
// 两个整数相加
public int add(int a, int b) {
return a + b;
}
// 三个整数相加
public int add(int a, int b, int c) {
return a + b + c;
}
// 两个浮点数相加
public double add(double a, double b) {
return a + b;
}
}
```
在这个例子中,`add`方法被重载了三次,每次参数列表都有所不同。
方法重写(Overriding)是指子类对继承自父类的方法进行重新定义,子类提供了自己的实现。当通过子类引用调用该方法时,实际执行的是子类重写后的方法。
举例:
```java
class Animal {
public void makeSound() {
System.out.println("动物发出声音");
}
}
class Dog extends Animal {
// 重写父类的makeSound方法
@Override
public void makeSound() {
System.out.println("汪汪叫");
}
}
public class Main {
public static void main(String[] args) {
Animal animal = new Dog();
animal.makeSound(); // 输出:汪汪叫
}
}
```
在这个例子中,`Dog`类重写了`Animal`类的`makeSound`方法。
方法覆盖(覆盖)是指在一个接口中声明的方法被实现类的具体方法实现。这在多态中也是常见的,因为通过接口类型的引用调用方法时,实际调用的是实现该接口的具体类的方法。
举例:
```java
interface Shape {
void draw();
}
class Circle implements Shape {
public void draw() {
System.out.println("绘制圆形");
}
}
class Rectangle implements Shape {
public void draw() {
System.out.println("绘制矩形");
}
}
public class Main {
public static void main(String[] args) {
Shape shape1 = new Circle();
Shape shape2 = new Rectangle();
shape1.draw(); // 输出:绘制圆形
shape2.draw(); // 输出:绘制矩形
}
}
```
在这个例子中,`Circle`和`Rectangle`两个类都覆盖了`Shape`接口中的`draw`方法。通过接口类型的引用`shape1`和`shape2`调用`draw`方法时,执行的是各自类中覆盖后的实现。
阅读全文