面向对象_抽象类练习老师案例

53 篇文章 0 订阅
46 篇文章 0 订阅
/*
	老师案例
		具体事物:基础班老师、就业班老师
		共性:姓名、年龄、讲课
		
	分析:从具体到抽象
		基础班老师:
			成员变量:姓名、年龄
			构造方法:无参、带参
			成员方法:teach();(JavaEE)
		就业班老师:
			成员变量:姓名、年龄
			构造方法:无参、带参
			成员方法:teach();(JavaSE)
		老师:
			成员变量:姓名、年龄
			构造方法:无参、带参
			成员方法:teach();
			
	实现:从抽象到具体
		老师:
			成员变量:姓名、年龄
			构造方法:无参、带参
			成员方法:getXxx()/setXxx();teach();
		基础班老师:
			继承自老师类
			重写讲课方法
		就业班老师:
			继承自老师类
			重写讲课方法
*/

//定义抽象老师类
abstract class Teacher{
	//姓名
	private String name;
	//年龄
	private int age;
	
	public Teacher(){}
	
	public Teacher(String name,int age){
		this.name = name;
		this.age = age;
	}
	
	public String getName(){
		return name;
	}
	
	public void setName(String name){
		this.name = name;
	}
	
	public int getAge(){
		return age;
	}
	
	public void setAge(int age){
		this.age = age;
	}
	
	//抽象方法
	public abstract void teach();
}

//定义基础班老师具体类
class BasicTeacher extends Teacher{
	public BasicTeacher(){}
	
	public BasicTeacher(String name,int age){
		super(name,age);
	}
	
	public void teach(){
		System.out.println("基础班老师讲解JavaSE");
	}
}


//定义就业班老师具体类
class WorkTeacher extends Teacher{
	public WorkTeacher(){}
	
	public WorkTeacher(String name,int age){
		super(name,age);
	}
	
	public void teach(){
		System.out.println("就业班老师讲解JavaEE");
	}
}

class AbstractTest2{
	public static void main(String[] args){
		//具体类测试
		//基础班老师
		//方式1
		BasicTeacher b = new BasicTeacher();
		b.setName("小刚");
		b.setAge(33);
		System.out.println(b.getName()+"---"+b.getAge());
		b.teach();
		System.out.println("-------------------------");
		//方式2
		BasicTeacher b2 = new BasicTeacher("小明",45);
		System.out.println(b2.getName()+"---"+b2.getAge());
		b2.teach();
		System.out.println("-------------------------");
		
		
		//就业班老师
		//方式1
		WorkTeacher wt = new WorkTeacher();
		wt.setName("小刚");
		wt.setAge(33);
		System.out.println(wt.getName()+"---"+wt.getAge());
		wt.teach();
		System.out.println("-------------------------");
		//方式2
		WorkTeacher wt2 = new WorkTeacher("小明",45);
		System.out.println(wt2.getName()+"---"+wt2.getAge());
		wt2.teach();
		System.out.println("-------------------------");
		
		//测试(多态)
		//基础班老师
		//方式1
		Teacher t = new BasicTeacher();
		t.setName("小刚");
		t.setAge(33);
		System.out.println(t.getName()+"---"+t.getAge());
		t.teach();
		System.out.println("-----------------------------");
		//方式2
		t = new BasicTeacher("小明",45); 
		System.out.println(t.getName()+"---"+t.getAge());
		t.teach();
		System.out.println("-----------------------------");
		
		//就业班老师
		//方式1
		t = new WorkTeacher();
		t.setName("小刚");
		t.setAge(33);
		System.out.println(t.getName()+"---"+t.getAge());
		t.teach();
		System.out.println("-----------------------------");
		//方式2
		t = new WorkTeacher("小明",45);
		System.out.println(t.getName()+"---"+t.getAge());
		t.teach();
	}
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编写一个Java项目,模拟一次包括老师备课,同学上课,布置作业和做作业的课堂教学过程。作业为判断字符串是否为2-重复串及其他字符串操作内容 1. 创建Java项目JavaTeaching2012 2. 创建包cn.qtech.util,在其中新建类RepeatedStringEstimator,该类有两个方法:(1)public boolean estimate(String s),用于判断字符串s是不是2-重复串(字符串中每个出现的字符出现2次且仅两次),如判断aaaa不是,abddab是,acbcab是。(2)public void stringOperate(),其中调用适当的字符串操作完成(a)判断两个字符传”abc”和”acb”是否相同,(b)输出"c:\\java\\jsp\\A.java"中第二次出现"\\j"的位置,并输出该位置起到串末的子串 3. 创建包cn.qtech.teaching,在其中新建抽象类UniversityPeople,包含一个抽象方法void doDuty(TeachingMessage msg),表示某人完成自己的任务。 4. 在包cn.qtech.teaching中创建枚举类型TeachingState,其中包括常量BEIKE, TINGKE, BUZHIZUOYE, ZUOZUOYE,分别表示备课,听课,布置作业,做作业 5. 在包cn.qtech.teaching中创建Student类继承自UniversityPeople,该类有成员变量name及name的getter/setter方法。实现的doDuty(TeachingMessage msg)方法中如果判断msg的状态为BEIKE,则修改msg状态为TINGKE并输出:"老师"+msg中老师对象名+"备完课后,去听课!";如果判断msg的状态为BUZHIZUOYE,则修改msg状态为ZUOZUOYE并输出:"老师"+msg中老师对象名+"布置完课作业后,开始做作业!",然后调用RepeatedStringEstimator中的两个方法输出作业结果 6. 在包cn.qtech.teaching中创建Teacher类继承自UniversityPeople,该类有成员变量name及name的getter/setter方法。实现的doDuty(TeachingMessage msg)方法中如果判断msg的状态为TINGKE,则修改msg状态为BUZHIZUOYE并从msg中获得并输出听课学生名单,然后输出

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值