什么是多态?看这一篇就够了(非常非常重要)

  • 多态的三种应用

一共五个类

  • 第一个:父类(宠物类)

/**
 * 宠物类
 * 
 * @author 小陈
 * @version 创建时间:2021年12月22日下午2:44:14
 */
public class Pet {
	/**
	 * 昵称
	 */
	public String name;

	/**
	 * 年龄
	 */
	public int ega;

	/**
	 * 品种
	 */
	public String variety;

	/**
	 * 宠物叫方法
	 */
	public void say() {
		System.out.println("宠物在叫");
	}

	/**
	 * 宠物吃方法
	 */
	public void eat() {
		System.out.println("宠物在吃");
	}
}

  • 第二个:子类(狗类,继承了宠物类)

/**
 * 狗类继承宠物类
 * 
 * @author 小陈
 * @version 创建时间:2021年12月22日下午3:14:10
 */
public class Dog extends Pet {
	/**
	 * 父类的eat方法重写
	 */
	@Override
	public void eat() {
		System.out.println("狗在吃东西");
	}

	/**
	 * 父类的say方法重写
	 */
	@Override
	public void say() {
		System.out.println("狗在吠");
	}
}

  • 第三个:子类(猫类,继承了宠物类)

/**
 * 猫类继承宠物类
 * 
 * @author 小陈
 * @version 创建时间:2021年12月22日下午2:43:46
 */
public class Cat extends Pet {
	/**
	 * 父类eat方法重写
	 */
	@Override
	public void eat() {
		System.out.println("猫在吃猫粮");

	}

	/**
	 * 父类say方法重写
	 */
	@Override
	public void say() {
		System.out.println("猫在喵喵叫");
	}
}

  • 第四个:主人类

/**
 * 主人类
 * 
 * @author 小陈
 * @version 创建时间:2021年12月22日下午3:25:18
 */
public class Master {
	/**
	 * 主人喂食的方法 多态的第二种应用:用父类作为方法形参,实参传任何一个子类对象,调用相同方法,执行不同操作
	 * 
	 * @param p
	 */
	public void feedpet(Pet p) {
		System.out.println("主人在喂食");
		p.eat();
	}

	/**
	 * 查看宠物的方法 多态的第三种应用: 用父类作为方法返回值,实现子类对象,调用相同方法,执行不同操作
	 * 
	 * @param name
	 * @return
	 */
	public Pet lookPet(String name) {
		// 声明宠物对象
		Pet p = null;
		if (name.equals("狗")) {
			p = new Dog();
		} else if (name.equals("猫")) {
			p = new Cat();
		}
		return p;
	}
}

  • 第五个:测试类(多态的三种应用)

/**
 * 测试多态的应用
 * 
 * @author 小陈
 * @version 创建时间:2021年12月22日下午3:20:53
 */
public class Test {

	public static void main(String[] args) {
		/* 多态的第一种应用: */
		// 用父类做数据类型,创建子类对象,调用相同方法,执行不同操作
		// 常用!提高了程序的可维护性 ,提高了后期的可扩展性!

		// 创建对象
		Pet xc = new Dog();
		Pet xx = new Cat();
		// 用对象调用方法
		xc.eat();
		xc.say();
		xx.eat();
		xx.say();

		/* 多态的第二种应用 */
		// 用父类作为方法形参,实参传任何一个子类对象,调用相同方法,执行不同操作

			// 创建对象
			Master m1 = new Master();
			Dog d1 = new Dog();
			Cat c1 = new Cat();
			// 用对象调用方法
			m1.feedpet(d1);
			m1.feedpet(c1);

		/* 多态的第三种应用 */
		// 用父类作为方法返回值,实现子类对象,调用相同方法,执行不同操作

		// 创建对象
		Master m2 = new Master();
		// 用对象调用方法
		Pet p1 = m2.lookPet("猫");
		Pet p2 = m2.lookPet("狗");

		p1.say();
		p2.say();
	}

}

多态的第一种应用:

  • 用父类做数据类型,创建子类对象,调用相同方法,执行不同操作

       常用!提高了程序的可维护性 ,提高了后期的可扩展性!

		// 创建对象
		Pet xc = new Dog();
		Pet xx = new Cat();
		// 用对象调用方法
		xc.eat();
		xc.say();
		xx.eat();
		xx.say();

多态的第二种应用:

  • 用父类作为方法形参,实参传任何一个子类对象,调用相同方法,执行不同操作

		// 创建对象
		Master m1 = new Master();
		Dog d1 = new Dog();
		Cat c1 = new Cat();
		// 用对象调用方法
		m1.feedpet(d1);
		m1.feedpet(c1);

多态的第三种应用:

  • 用父类作为方法返回值,实现子类对象,调用相同方法,执行不同操作

        // 创建对象
		Master m2 = new Master();
		// 用对象调用方法
		Pet p1 = m2.lookPet("猫");
		Pet p2 = m2.lookPet("狗");

		p1.say();
		p2.say();

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值