【多态】面向对象之多态实例代码

【多态】面向对象之多态实例

对象:

  1. 主人
  • 行为:喂养宠物
  1. 宠物(父类)
  • 行为:吃XXX
  1. 猫(子类)
  • 行为:吃鱼
  1. 狗(子类)
  • 行为:吃骨头

实例代码:

1.无多态实例代码

public class Master{
public void feed( Cat cat){
cat.eat();
}
public void feed(Dog dog){
dog.eat();
}//这里的两个feed方法构成重载
//往后主人想要喂养新的宠物都要在这里添加新的feed(实例)方法
//主人与具体的宠物一一关联,耦合度高,拓展性差
}

public class Cat{
public void eat(){
System.out.println("cat is eating a fish");
}
}

public class Dog{
public void eat(){
System.out.println("dog is eating a bone");
}
}

public class Test{
public static void main(String[] args){
Master m=new master();
Cat cat=new cat();
Dog dog=new Dog();
m.feed(cat);
m.feed(dog);
}
}

2.多态实例代码

public class Master{
public void feed( Pet pet){
pet.eat();
}
//往后主人想要喂养新的宠物无需在这里添加新的feed(实例)方法
//主人与具体的宠物不再关联,面向的是抽象的Pet,耦合度低,拓展性高
//降低了程序耦合度【解耦合】,提高了程序的拓展力
}

public class Pet{
//将多个宠物实例对象抽象为宠物类
public void eat(){

}
}

public class Cat extends Pet{
public void eat(){
System.out.println("cat is eating a fish");
}//继承宠物类,eat()方法构成方法的覆盖(重写)
}

public class Dog extends Pet{
public void eat(){
System.out.println("dog is eating a bone");
}
}

public class Test{
public static void main(String[] args){
Master m=new Master();
Cat cat=new Cat();
Dog dog=new Dog();
m.feed(cat);//m.feed(new cat());
m.feed(dog);//这里用到了多态,子类Dog/Cat-->父类Pet转换
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值