Java 基础

/*

1多态的体现
父类的引用也可以接受自己的子类
2多态的前提
 必须是类与类之间有联系,要么是继承要么是实现。
 通常要覆盖
3多态的好处
 很好的提高代码的扩展性
4多态的应用

5多态的弊端
提高了扩展性,但是只能使用父类的引用访问父类中的成员。

6.多态的
*/

abstract class Animal
{
int num=9;
  abstract void eat();
}

class Cat extends Animal
{
int num=112;
public void eat()
{
 System.out.println("eat fish");
}
public void catchfish()
{
 System.out.println("catch fish");
}
}
class Dog extends Animal
{
public void eat()
{
System.out.println("eat Bone");
}
public void lookHome()
{
System.out.println("look home");
}
}
class Pig extends Animal
{
public void eat()
{
System.out.println("eat food");
}
public void sleep()
{
System.out.println("can sleep");
}
}
class Duotaidemo 
{
public static void main(String[] args) 
{
//Cat c=new Cat();
//c.eat();

function(new Dog());
function(new Cat());

          Animal a=new Cat();
 a.eat();
 /*
 在多态中非静态成员函数的特点:
 在编译时期:参阅引用型变量(a)所属的类中是否有调用的方法,如果有,则编译通过,否则失败
 在运行时期:参阅对象所属的类中调用的方法(new Cat())

 简单总结:编译看左边,运行看右边。

           注意:1.。在多态中成员变量的特点:
  无论编译和运行,都参考左边(引用类型所属的类)

       2.。在多态中static成员函数的特点:
无论编译和运行。都参考左边(引用类型所属的类)

 */


}


public static void function(Animal a)
{
 a.eat();
 if(a instanceof Cat)
{
             Cat c=(Cat)a;
c.catchfish();
    }
else if(a instanceof Dog)
{
 Dog d=(Dog)a;
 d.lookHome();
}
else 
{
Pig p=(Pig)a;
p.sleep();
}
}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值