黑马程序员----java之多态(1)

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IO开发S</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------

在学习java中的多态,对学习内容做下笔记,好记性不如烂笔头嘛!

对象的多态性。
动物 x=new 猫();一个对象,两种形态。
简单说:就是一个对象对应着不同类型。
多态在代码中的体现:
 父类或者接口的引用指向其子类的对象。比如:定义一个方法在里面传入动物对象作为参数,那么只要继承了动物类的类,直接调用方法在里面传入类,就可以调用公有的方法了。

多态的好处:
 提高了代码的扩展性,前期定义的代码可以使用后期的内容。比如:新添加一个猪类继承动物类,也有吃的行为,则前期定义的方法也可以用。

多态的弊端:
 前期定义的内容不能使用后期子类的特有内容。比如:要在动物方法里面调用抓老鼠的方法,或新定义一个方法。则不行了,因为动物抽象类里面没有这个方法,而要定义一个的话,其他类又没有,动物类的方法必须是共性的。

多态的前提:
 1.必须有关系,继承,实现。
 2.要有覆盖。

下面是代码:

abstract class Animal
{
	abstract void eat();
}

class Dog extends Animal
{
	void eat(){
		System.out.println("啃骨头");
	}
	void lookHome(){
		System.out.println("看家");
	}
}

class Cat extends Animal
{
	void eat(){
		System.out.println("吃鱼");
	}
	void catchMouse(){
		System.out.println("抓老鼠");
	}
}
class Pig extends Animal
{
	void eat(){
		System.out.println("饲料");
	}
}

class DuotaiDemo 
{
	public static void main(String[] args) 
	{
		//Cat a=new Cat();
		//method(a);
		//Dog d=new Dog();
		//method(d);

		//method(new Pig());

		Animal a=new Cat();//自动类型提升,猫对象提升了动物类型。但是特有功能无法访问。
							//作用就是限制对特有功能的访问。
							//专业讲:向上转型.
		a.eat();
		//a.catchMouse();不能用啦
		//如果还想用具体动物猫的特有功能。
		//你可以讲该对象进行向下转型。
		Cat c=(Cat)a;//向下转型的目的是为了使用子类中的特有方法。
		c.eat();

		//Animal a=new Animal();这是一个动物对象,不能转换成猫
		//Cat c=(Cat)a;


	}

	/*public static void method(Cat a){
		a.eat();
	}
	public static void method(Dog d){
		d.eat();
	}

	*/
	/*
	public static void method(Animal a){
		a.eat();
	}
	*/
}


 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值