Q21:Java多态实例解析

/**
 * 	测试结果:多态说法
 * 	运行时多态:同一个方法,针对不同对象而言,执行过程和结果可能不同;父类作为参数,调用父类引用名的方法;
 * 	但是,我们调用,传递子类的对象;最终结果,和子类对象的执行结果是一致;
 * 用多态的原因是,如果每出现一个对象,就要多一种方法来写这个对象(老师),这样代码可维护性差
 * java中实现多态的方式(继承)
 * 1、创建父类、子类、子类重新父亲中的方法
 * 2、创建“场景类”将父亲引用作为方法参数
 * 3、调用方法,传递的子类对象,那么结果根据子类对象的不同而不同
 * @author 白菜小皮艇
 *
 */
//程序入口
public class TestTeacher1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		//创建classroom对象
		Classroom cr = new Classroom();
		
		//Java老师来上课
		JavaTeacher jt = new JavaTeacher("Java老师");
//		jt作为实际参数传递到cr中的classroom 的givelesson方法
		cr.giveLesson(jt);
		
		//PE老师来上课
		PETeacher pt = new PETeacher("体育老师");
		cr.giveLesson(pt);
		
		//不用多态时的写法
//		JavaTeacher1 jt = new JavaTeacher1("老杨");
//		jt.showLesson();
//		PETeacher pt = new PETeacher("老张啊");
//		pt.showLesson();
	}
}
//父类
class Teacher1 {
	private String name;
	
	/**
	 * 带参构造
	 * @param name  老师的名字
	 */
	public Teacher1(String name) {
		this.name = name;
	}
	//上课的方法
	public void showLesson() {
		System.out.println(name + "——正在上课");
	}
	
}
//子类
class JavaTeacher extends Teacher1 {

	public  JavaTeacher(String name) {
		super(name);
		// TODO Auto-generated constructor stub
	}
	@Override  
//	方法重写
	public void showLesson() {
		// TODO Auto-generated method stub
		
		//调用父类的方法
		super.showLesson();
		
		//这是自己子类中的方法
		System.out.println("Java课开始了,大家打开eclipse");
	}
}
//子类
class PETeacher extends Teacher1{
	
	public PETeacher(String name){
		super(name);
	}
	@Override
	public void showLesson() {
		// TODO Auto-generated method stub
		//调用不是继承
		
		//调用父类的方法
		super.showLesson();
		
		//这是自己子类中的方法
		System.out.println("体育课开始了,请大家排好队");
	}
}

//教室类
class Classroom {
	public void giveLesson(Teacher1 t) {
		//如果子类重写了父类的方法showLesson(),则调子类,否则就调父类
		//这里是调用子类的方法(发送消息)
		t.showLesson();
		
	}
}

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千鹤万象

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值