欢迎访问宙启技术站
智能推送

Java中的方法重写和多态的实现方式

发布时间:2023-05-28 20:29:57

方法重写和多态是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"。