Java中的方法重写和多态的实现方式
方法重写和多态是Java语言中的两个重要概念,它们的实现方式有以下几种:
1. 方法重写
方法重写是指在子类中定义与父类中同名的方法,但是方法的实现方式不同。实现方法重写需要遵守以下规则:
(1)返回类型必须相同;
(2)方法名必须相同;
(3)参数列表必须相同;
(4)访问修饰符不能严格小于父类中该方法的访问修饰符。
方法重写的实现方式可以通过以下示例来说明:
class Animal {
public void sleep() {
System.out.println("Animal sleep");
}
}
class Cat extends Animal {
public void sleep() {
System.out.println("Cat sleep");
}
}
public class Test {
public static void main(String[] args) {
Animal animal = new Animal();
animal.sleep(); // 输出 Animal sleep
Animal cat = new Cat();
cat.sleep(); // 输出 Cat sleep
}
}
在上述示例中,Animal类中定义了一个名为sleep的方法,而Cat类继承了Animal类并重写了sleep方法,当执行cat.sleep()时会输出Cat sleep。
2. 多态
多态是一种面向对象的特性,允许不同的对象共享相同的行为。Java中的多态可以通过以下实现方式:
(1)父类引用指向子类对象。
(2)方法重写。
父类引用指向子类对象的示例代码:
Animal animal1 = new Animal(); Animal animal2 = new Cat();
在上述代码中,Animal类型的引用animal1指向Animal对象,而Animal类型的引用animal2指向Cat对象。由于Cat类是Animal类的子类,因此animal2既可以用Cat类的方法也可以用Animal类的方法。
方法重写的示例代码已经在上文提到过,这里不再赘述。
3. 接口
Java中的接口也是实现多态的一种方式。接口是一种规范,可以定义一组抽象方法,任何类都可以实现这个接口并提供具体的实现。
接口的定义方式如下:
interface Drawable {
void draw();
}
实现接口的类必须实现该接口的所有方法,示例代码:
class Square implements Drawable {
public void draw() {
System.out.println("Drawing Square");
}
}
class Circle implements Drawable {
public void draw() {
System.out.println("Drawing Circle");
}
}
public class Test {
public static void main(String[] args) {
Drawable square = new Square();
Drawable circle = new Circle();
square.draw();
circle.draw();
}
}
在上述示例代码中,Square、Circle类实现了Drawable接口,并提供了具体的实现。在main方法中,定义了Drawable类型的引用square和circle,分别指向Square和Circle实例。当调用square.draw()时会输出"Drawing Square",调用circle.draw()时会输出"Drawing Circle"。
