动力节点旗下在线教育品牌  |  咨询热线:400-8080-105 学Java全栈,上蛙课网
首页 > 文章

对java多态作用的代码分析

07-17 16:52 343浏览
举报 T字号
  • 大字
  • 中字
  • 小字

多态(Polymorphism)属于java面向对象三大特征之一,它的前提是封装形成独立体,独立体之间存在继承关系,从而产生多态机制。多态是同一个行为具有多个不同表现形式或形态的能力。Java多态最主要的作用是增加代码的扩展性,那么java多态作用具体是什么呢,下面通过写代码的方式来对java多态作用进行分析。

我们先来了解一个业务背景:请设计一个系统,描述主人喂养宠物的场景,首先在这个场景当中应该有“宠物对象”,宠物对象应该有一个吃的行为,另外还需要一个“主人对象”,主人对象应该有一个喂的行为,请看代码:

//宠物狗
public class Dog {
	String name;
	public Dog(String name){
		this.name = name;
	}
	//吃的行为
	public void eat(){
		System.out.println(this.name + "在啃肉骨头!");
	}
}
//主人
public class Master {
	//喂养行为
	public void feed(Dog dog){
		//主人喂养宠物,宠物就吃
		System.out.println("主人开始喂食儿");
		dog.eat();
		System.out.println("主人喂食儿完毕");
	}
}
public class Test {
	public static void main(String[] args) {
		//创建狗对象
		Dog dog = new Dog("二哈");
		//创建主人对象
		Master master = new Master();
		//喂养
		master.feed(dog);
	}
}

运行结果为:

假设现在主人家里又来了一个宠物猫,那该怎么办呢?请看代码:

//主人
public class Master {
	//喂养行为
	public void feed(Dog dog){
		//主人喂养宠物,宠物就吃
		System.out.println("主人开始喂食儿");
		dog.eat();
		System.out.println("主人喂食儿完毕");
	}
	//喂养行为
	public void feed(Cat cat){
		//主人喂养宠物,宠物就吃
		System.out.println("主人开始喂食儿");
		cat.eat();
		System.out.println("主人喂食儿完毕");
	}
}
public class Test {
	public static void main(String[] args) {
		//创建狗对象
		Dog dog = new Dog("二哈");
		//创建主人对象
		Master master = new Master();
		//喂养
		master.feed(dog);
		//创建猫对象
		Cat cat = new Cat("汤姆");
		//喂养
		master.feed(cat);
	}
}

运行结果为:

在软件开发过程中,有这样的一个开发原则:开闭原则。开闭原则中“开”,是指对于组件功能的扩展是开放的,是允许对其进行功能扩展的;开闭原则中“闭”,是指对于原有代码的修改是封闭的,即修改原有的代码对外部的使用是透明的。以上程序在扩展的过程当中就违背了OCP原则,因为在扩展的过程当中修改了已经写好的Master类,怎样可以解决这个问题呢?多态可以解决,请看代码:

//宠物类
public class Pet {
	String name;
	//吃的行为
	public void eat(){
	}
}
//宠物猫
public class Cat extends Pet{
	public Cat(String name){
		this.name = name;
	}
	//吃的行为
	public void eat(){
		System.out.println(this.name + "在吃鱼!");
	}
}
//宠物狗
public class Dog extends Pet{
	public Dog(String name){
		this.name = name;
	}
	//吃的行为
	public void eat(){
		System.out.println(this.name + "在啃肉骨头!");
	}
}
//主人
public class Master {
	//喂养行为
	public void feed(Pet pet){
		//主人喂养宠物,宠物就吃
		System.out.println("主人开始喂食儿");
		pet.eat();
		System.out.println("主人喂食儿完毕");
	}
}
public class Test {
	public static void main(String[] args) {
		//创建狗对象
		Dog dog = new Dog("二哈");
		//创建主人对象
		Master master = new Master();
		//喂养
		master.feed(dog);
		//创建猫对象
		Cat cat = new Cat("汤姆");
		//喂养
		master.feed(cat);
	}
}

运行结果如下图所示:

通过以上内容的学习,我们可以看到多态在开发中联合方法覆盖一起使用,java多态作用就是可以降低程序的耦合度,提高程序的扩展力。所谓多态就是同一个行为作用到不同的对象上,最终的表现结果是不同的,主要的要求就是对象是可以进行灵活切换的,灵活切换的前提就是解耦合,解耦合依赖多态机制。相信有了上面对一段代码的具体分析后,各位java的学习者,尤其是java零基础的刚入门的新手,对java多态作用有了更深刻的理解。希望朋友们可以在实践中多多去体会java多态带来的作用和好处。

0人推荐
共同学习,写下你的评论
0条评论
往后余生
程序员往后余生

1篇文章贡献4002字

作者相关文章更多>

推荐相关文章更多>

Java数据结构

HelloWorld10-31 08:24

浅谈MySQL中SQL优化的常用方法

军哥08-12 23:29

五分钟读懂UML类图

江湖人称小李白12-10 10:41

MyBatis开发框架的四大核心

IT逐梦者08-17 21:43

一次搞定continue,break和return

HelloWorld11-06 11:19

发评论

举报

0/150

取消