JAVA多态的体现

多态是通过:
1 接口 和 实现接口并覆盖接口中同一方法的几不同的类体现的 

2 父类 和 继承父类并覆盖父类中同一方法的几个不同子类实现的.

多态有两种表现形式:方法的重载和类的重写(覆写)
首先说重载(overload),是发生在同一类中。与什么父类子类、继承毫无关系。    
标识一个函数除了函数名外,还有函数的参数(个数和类型)。也就是说,一个类中可以有两个或更多的函数,叫同一个名字而他们的参数不同。    
他们之间毫无关系,是不同的函数,只是可能他们的功能类似,所以才命名一样,增加可读性,仅此而已!  
    
再说重写/覆盖(override),是发生在子类中!也就是说必须有继承的情况下才有覆盖发生(动态绑定)。
我们知道继承一个类,也就有了父类了全部方法,如果你感到哪个方法不爽,功能要变,那就把那个函数在子类中重新实现一遍。  
这样再调用这个方法的时候,就是执行子类中的过程了。父类中的函数就被覆盖了。(当然,覆盖的时候函数名和参数要和父类中完全一样,不然你的方法对父类中的方法就不起任何作用,因为两者是两个函数,毫不关系)


多态存在的三个必要条件
一、要有继承;
二、要有重写;
三、父类引用指向子类对象


多态的作用浓缩成一句话的话,应该就是降低代码耦合度了。


接口的体现,在Android中随处可见的匿名内部类就有描述。

父子类的体现:

public class test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Parent parent = new Child();
		parent.print();

		Parent parent2 = new ChildTwo();
		parent2.print();
	}

	public static class Parent {
		public void print() {
			System.out.println("Parent");
		};
	}

	public static class Child extends Parent {
		public void print() {
			System.out.println("Child");
		}
	}

	public static class ChildTwo extends Parent {
		public void print() {
			System.out.println("ChildTwo");
		}
	}
}
main函数中打印结果为:

Child
ChildTwo

说明通过Parent子类的实例对象赋予Parent类的引用。此引用通过不同的子类对象,执行其覆写父类方法的具体实现,从而体现了类的多态性。

这种动态绑定的好处是扩展性很好,例如玩过网游的话应该知道 游戏中有不同的角色,它们都有一个父类,它们做相同动作时表现出来的效果就会不一样,比如跑,魔法师的跑跟战士的跑就不会一样,这就是俩者都覆盖了父类中的跑方法,各自有自己的现实,表现出来多态。如果有一天你想再加个角色,只用再写一个类继承该父类,覆盖其中的跑方法就行了,其他代码不用怎么改,所以可维护性也很好。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值