java多态的表现形式有几种方法(java实现多态有几种方法)

什么是Java多态

Java多态是指使用相同的方法名,但实现不同的行为。它的实现方式可以是方法重载、方法重写和抽象类与接口的实现。

使用方法重载实现Java多态

方法重载是指在同一个类中,可以定义多个名称相同但参数类型不同的方法。当传入不同类型的参数时,编译器会自动选择相应的方法来执行。例如:

public class Car {
public void run() {
System.out.println("汽车正常行驶");
}

public void run(int speed) {
System.out.println("汽车以" + speed + "公里/小时行驶");
}

public void run(String location) {
System.out.println("汽车驶向" + location);
}
}

这里,Car类定义了三个名为run的方法,分别使用不同的参数类型。当我们调用该类的run方法时,编译器会根据传入的参数类型自动选择相应的方法来执行:

Car car = new Car();
car.run(); // 输出:汽车正常行驶
car.run(100); // 输出:汽车以100公里/小时行驶
car.run("北京"); // 输出:汽车驶向北京

使用方法重写实现Java多态

方法重写是指在子类中实现与父类相同名称、参数列表、返回值类型的方法,但实现方式不同。当我们调用该方法时,编译器会自动选择子类的实现来执行。例如:

public class Animal {
public void move() {
System.out.println("动物可以移动");
}
}

public class Dog extends Animal {
public void move() {
System.out.println("狗可以跑和走");
}
}

public class Cat extends Animal {
public void move() {
System.out.println("猫可以跳和走");
}
}

这里,Animal类定义了一个名为move的方法,Dog和Cat类分别继承了Animal类,并分别重写了move方法。当我们调用这些类的move方法时,编译器会自动选择相应的子类实现来执行:

Animal animal = new Animal();
animal.move(); // 输出:动物可以移动

Animal dog = new Dog();
dog.move(); // 输出:狗可以跑和走

Animal cat = new Cat();
cat.move(); // 输出:猫可以跳和走

使用抽象类和接口实现Java多态

抽象类是一种无法实例化的类,它定义了一些方法和属性,但没有具体的实现。当我们需要使用该类时,必须继承它并实现它的抽象方法。接口则用于定义一些规范,具体的实现由实现了该接口的类来完成。使用抽象类和接口可以更灵活地实现Java多态,例如:

java多态的表现形式有几种方法(java实现多态有几种方法)

public abstract class Shape {
public abstract void draw();
}

public class Circle extends Shape {
public void draw() {
System.out.println("画圆形");
}
}

public class Triangle extends Shape {
public void draw() {
System.out.println("画三角形");
}
}

public interface Color {
public void fill();
}

public class Red implements Color {
public void fill() {
System.out.println("填充红色");
}
}

public class Blue implements Color {
public void fill() {
System.out.println("填充蓝色");
}
}

这里,Shape类是一个抽象类,定义了一个抽象方法draw;Circle和Triangle类都继承了Shape类,并分别实现了draw方法。Color接口定义了一个fill方法,Red和Blue类分别实现了Color接口,并实现了fill方法。当我们需要画一个红色的圆形时,可以这样实现:

Shape shape = new Circle();
Color color = new Red();
shape.draw(); // 输出:画圆形
color.fill(); // 输出:填充红色

这里,shape变量引用的是Circle实例,color变量引用的是Red实例。当我们调用shape的draw方法和color的fill方法时,编译器会自动选择相应的子类实现来执行。

本文来自投稿,不代表亲测学习网立场,如若转载,请注明出处:https://www.qince.net/javapeixunlnx.html

郑重声明:

本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。

我们不承担任何技术及版权问题,且不对任何资源负法律责任。

如遇到资源无法下载,请点击这里失效报错。失效报错提交后记得查看你的留言信息,24小时之内反馈信息。

如有侵犯您的版权,请给我们私信,我们会尽快处理,并诚恳的向你道歉!

(0)
上一篇 2023年4月25日 上午5:27
下一篇 2023年4月25日 上午5:27

猜你喜欢