多态,前提,特点,好处,弊端

<pre name="code" class="java">class Animal {
	public void eat() {}
}

class Dog extends Animal {
	public void eat() {
		System.out.println("Dog eat");
	}
}

class Cat extends Animal {
	public void eat() {
		System.out.println("Cat eat");
	}

	public void play() {
		System.out.println("猫捉迷藏");
	}
}

class DuoTaiDemo7 {
	public static void main(String[] args) {
		Animal a = new Dog(); //向上转型
		a.eat();


		a = new Cat(); //向上转型
		a.eat();
		//报错
		//a.play();
	
		//创建子类对象
		//Cat c = new Cat();
		//c.play();
		Cat c = (Cat)a; //<span style="color:#ff0000;"><strong>向下转型---->为了调用子有父没有(cat有animal没有)的方法。此题为了c.play()</strong></span>
		c.eat();
		c.play();
		
		//ClassCastException:类型不匹配
		a = new Dog();
		Dog d = (Dog)a;
		a.eat();

	
	}
}

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">多态:对象在不同时刻表现出来的多种状态。</span>
 
举例: 

水(水蒸气,冰,水)


动物和狗。


动物是动物,
动物是狗。


狗是狗。
狗是动物。


Java代码的体现:

多态的前提:

多态的前提:
A:要有继承或者实现关系。
B:要有方法的重写。
没有方法重写,继承抽象类,或者实现接口,没有意义。
C:要有父类(父接口)引用指向子类对象。

*/




/*
多态:
编译和运行的状态不一致。 ******* !!!!注意:这些自我总结是针对多态的,平时的简单继承,还是先找子类再找父类!!!!*****
Fu f = new Fu();  //
Zi z = new Zi();   __________________________________//_____________________________________________________________________
 | |
多态的成员特点:  | |
成员变量:--------------------|--------->只找父类;若是方法中的成员变量,先找此方法所在的(子//父)类中是否有, |
编译看左边,运行看左边。  |  _  (有则用,无则看父有没有//有则用,无则报错,不能逆向去找子类了) |
成员方法(要求是重写):      |          |  先找子类,再找父类。(方法中嵌套方法,也是先找子类再找父类)    |
编译看左边,运行看右边。--|----------|  既然成员方法重写了,肯定依照重写的来(重写肯定指的是子类的方法),所以看右边。 |
 | |_ 不重写,就不符合多态了,依照原方法来,即在左边了。 |
静态成员方法:  | |
编译看左边,运行看左边。--|--------->只找父类。。静态是与类相关,而不是对象。 |
 | |
为什么呢?      |_________________________________________________________________________________________________________|
因为方法有重写,而变量没有。
*/






/*
多态的好处:
A:维护性(是有继承保证)
B:扩展性(当你不知道将来使用哪个子类的时候,那么,就把这里传递父类的引用。这个时候,你将来不管传递哪个子类,我都可以接收)

弊端:
不能使用子类的特有功能。


多态的弊端:
不能使用子类的特有功能。


我就要使用,怎么办呢?
A:创建子类对象。可以解决,但是不合理。
B:多态中的转型问题
a:向上转型
从小到大。Dog,Cat - Animal
b:向下转型
从大到小。Animal -- Dog,Cat
必须加强制类型转换。
*/
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值