java中的多态

文章介绍了Java中如何利用多态性提高代码的扩展性和易用性。通过创建一个图形类Shape,并让正方形和圆形类继承它,然后在draw方法中根据对象的实际类型绘制相应图形,避免了重载多个方法,简化了代码并提高了维护性。
摘要由CSDN通过智能技术生成

java中的多态

利用多态可以使程序具有良好的扩展性,并可以对所有类对象进行通用的处理。

假如现在要编写一个绘制图形的方法draw(),如果传入正方形对象就绘制正方形,传入圆形对象就绘制圆形,这种场景可以使用重载来实现,定义如下:

public void draw(Square s) {  //绘制正方形的方法
	
}
public void draw(Circular s) {//绘制圆形的方法
	
}

但是这种写法有个问题,正方形和圆形都是图形,这场景细分的重载方式不仅增加了代码量,还降低了"易用度"。如果定义一个图形类,让它处理所有继承该类的对象,使每个继承图形类的对象作为draw()方法的参数,然后在draw()方法中做一些限定就可以根据不同图形类对象绘制相应的图形。这样处理能很好地解决代码冗杂的问题,同时程序也易于维护。

创建Shape图形类,作为Square正方形和Circular圆形类的父类。创建Demo类,并在该类中创建一个绘图用的draw()方法,参数为Shape类型,任何Shape类的子类对象都可以作为方法的参数,并且方法会根据参数的类型绘制相应的图形。

class Shape{}                                      //图形类
class Square extends Shape{}                       //正方形类继承图形类
class Circular extends Shape{}                     //圆形类继承图形类

public class Demo {
	public static void draw(Shape s) {             //绘制方法
		if(s instanceof Square) {                  //如果是正方形
			System.out.println("绘制正方形");
		} else if(s instanceof Circular) {         //如果是圆形
			System.out.println("绘制圆形");
		} else {                                   //如果是其他类型
			System.out.println("绘制父类图形");
		}
	}
	
	public static void main(String[] args) {
		draw(new Shape());
		draw(new Square());
		draw(new Circular());
	}
}

运行结果如下:

绘制父类图形

绘制正方形

绘制圆形

从本实例的运行结果中可以看出,以不同类对象为参数调用draw()方法,可以处理不同的图形绘制问题。使用多态节省了开发和维护时间,因为程序员无须在所有的子类中定义执行相同功能的方法,避免了大量重复代码的编写。同时,只要实例化一个继承父类的子类对象,即可调用相应的方法,如果需求发生了变更,只需要维护一个draw()方法即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值