当先锋百科网

首页 1 2 3 4 5 6 7

Java是一种面向对象编程语言,其中多态和方法重载是重要的概念。多态让我们可以使用一个父类引用来调用子类方法,而方法重载允许我们在同一类中定义多个同名方法,但是参数列表必须不同。

// 多态
public class Animal {
public void eat() {
System.out.println("Animal eats..");
}
}
public class Cat extends Animal {
public void eat() {
System.out.println("Cat eats fish..");
}
}
public class Dog extends Animal {
public void eat() {
System.out.println("Dog eats meat..");
}
}
public class Main {
public static void main(String[] args) {
Animal animal1 = new Cat();
Animal animal2 = new Dog();
animal1.eat(); // 输出 Cat eats fish..
animal2.eat(); // 输出 Dog eats meat..
}
}

在上面的例子中,我们定义了一个Animal类,以及两个继承自Animal的子类Cat和Dog。在Main类中声明了一个Animal类型的引用变量animal1和animal2。如果我们调用animal1.eat(),由于animal1是一个Cat类型的引用,Java会自动辨别出应该调用Cat类中的eat方法。同样,如果我们调用animal2.eat(),Java会自动辨别出应该调用Dog类中的eat方法。这就是多态的作用。

// 方法重载
public class Overload {
public void print(int x) {
System.out.println("The int value is " + x);
}
public void print(double x) {
System.out.println("The double value is " + x);
}
public void print(String x) {
System.out.println("The string is " + x);
}
}
public class Main {
public static void main(String[] args) {
Overload obj = new Overload();
obj.print(10); // 输出 The int value is 10
obj.print(5.5); // 输出 The double value is 5.5
obj.print("Hello World!"); // 输出 The string is Hello World!
}
}

在上面的例子中,我们定义了一个Overload类,其中包含了三个同名方法print,但是参数列表不同。通过这种方法重载的形式,我们可以简化代码,并且可以重用同名方法的名字。例如:在Java API中,InputStream中的read方法被重载了32次,因为每个方法读入不同的数据类型(字节、字符等等)。当我们需要从不同的数据源读取数据时,我们可以使用同一个read方法,只需改变参数列表即可。