java基础_04_多态


多态:

一个事物,具备的多种形态。

特点

Fu a=new Zi();或 Zi a=new Zi(); 

1,多态中成员函数:

     在编译时:参考左边,调用 Fu类里的方法,如果父类里没有该方法,则会编译失败。

     在执行时:参考右边,调用 Zi类里的方法。

2,多态中(静态/非静态)成员变量:

     无论编译还是执行都参考左边 调用左边类里的变量值。

3,多态中特殊的静态成员函数:

无论编译还是执行都参考左边。

注意:多态中调用子类父类中共有的方法,运行的是子类重写后的方法如果要是调用子类的特有方法,必须进行类型的转换,使用instanceof 确认 ,然后在强转在调用其子类方法。   

心得:多态是由继承衍生过来的,有了继承的特性才有了多态。多态就是子类和父类的另一种使用关系。有了多态我们可以更好的操作子类和父类之间的关系。在使用多态特性的时候要注意,在子类调用成员变量和成员函数的候,要区分出编译时期和执行时期的不同。

例:

abstract class Animal
{
	public abstract void eat();
} 
class Cat extends Animal
{
	public void eat(){
		System.out.println("吃鱼");
	}
	public void zhua(){
		System.out.println("抓老鼠");
	}
}
class Dog extends Animal
{
	public void eat(){
		System.out.println("啃骨头");
	}
	public void kanmen(){
		System.out.println("看门");
	}
}
class  DuoTaiDemo
{
	public static void main(String[] args) 
	{
		Animal a=new Cat();  //多态性,cat dog 都继承Animal  这是一个自动提升的过程
		fun(a);

		//如果想要用cat 类里面的其它方法,如下:
		Cat c=(Cat)a; //把上面强制转cat
		c.zhua(); //这样就可以用cat类里的其它方法了。

		Animal d=new Dog();
		fun(d);
		Dog dg=(Dog)d;
		dg.kanmen();
	}
	public static void fun(Animal x){  //这样写成父类,就可以少写代码。其子类都可以写进来。。
		x.eat();

       /*
	   if(x instanceof Cat){    //x是不是cat 是就执行
			Cat c=(Cat)a; //把上面强制转cat
			c.zhua();
	   }
	   else if(x instanceof Dog){  //x是不是 dog 
			Dog dg=(Dog)d;
			dg.kanmen();
	   }
	   */
	}
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值