Java之继承、封装

打印效果如下:

老师的信息:

姓名:王飞

年龄:30

性别:男

工龄:5

我承诺,我会认真教课。

王飞爱玩象棋

学生的信息:

姓名:小明

年龄:15

性别:男

学号:00023102

我承诺,我会 好好学习。

小明爱玩足球。

  1. 案例题目描述:
    1. 做一个Student类,Student类有名称(name),性别(sex),年龄(age),学号(stu_id),做合理封装,通过构造器在创建对象时将4个属性赋值。
    2. 写一个Teacher类,Teacher类有名称(name),性别(sex),年龄(age),工龄(work_age),做合理封装,通过构造器在创建对象时将4个属性赋值。
    3. 因为Student类和Teacher类有公共内容,所以尝试编写父类(Person),将公共内容抽象成父类。
    4. 学生需要有学习的方法(study),在方法里写生“我承诺,我会好好学习。”。
    5. 教师需要有教学的方法(teach),在方法里写上“我承诺,我会认真教学。”。
    6. 学生和教师都有玩的方法(play),学会玩的是足球,老师玩的是象棋,此方法是返回字符串的,分别返回“xx爱玩足球”和“xx爱玩象棋”(其中xx分别代表学生和老师的姓名)。因为玩的方法名称都一样,所以要求此方法定义在父类中,子类实现重写。
    7. 要求测试类结果和效果案例一样。
  2. 案例完成思路。
    1. 一共编写4个类,名称分别为“Person.java”,“Teacher.java” ,“Student.java”,“Test.java”。(20)
    2. “Person.java”是父类,需要老师类和学生类继承,并按要求完成功能。(20)
    3. 通过构造器在创建对象时,可以使用类似this.setName(name);代码进行属性赋值。(20)
    4. 在“Person.java”类中编写play方法时,只要返回空字符串就可以了,因为这个方法要被子类重写。注意此方法在编写时,要把当前的用户名称也一并返回出来,思考下如何编写。(30)
public class Person {
	private String name;
	private String sex;
	private int age;
	public Person(String name, String sex, int age) {
		this.name = name;
		this.sex = sex;
		this.age = age;
	}
	public String getSex() {
		return sex;
	}
	public int getAge() {
		return age;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getName() {
		return name;
	}
	public void show() {
	}
	public String play() {
		return "";
	}
}

public class Student extends Person{
	
	private String stu_id;

	public Student(String name, String sex, int age, String stu_id) {
		super(name, sex, age);
		this.stu_id = stu_id;
	}
	/**
	 * 功能:学生承诺
	 * author:***
	 * time:2018年8月2日下午5:32:40
	 */
	public void study() {
		System.out.println("我承诺,我会好好学习。");
	}
	/**
	 * 功能:学生信息输出
	 * author:***
	 * time:2018年8月2日下午5:32:40
	 */
	public void show() {
		System.out.println("学生的信息是:");
		System.out.println("姓名:"+getName()+"\n年龄"+getAge()
		+"\n性别"+getSex()+"\n学号:"+stu_id);
	}
	public String play() {
		return super.getName()+"爱玩足球";
	}
}
public class Teacher  extends Person{
	private int work_age;

	public Teacher(String name, String sex, int age, int work_age) {
		super(name, sex, age);
		this.work_age = work_age;
	}
	/**
	 * 功能:教师承诺
	 * author:***
	 * time:2018年8月2日下午5:31:47
	 */
	public void teach() {
		System.out.println("我承诺,我会认真教学。");
	}
	public String play() {
		return super.getName()+"爱玩象棋";
	}
	/**
	 * 功能:教师信息输出
	 * author:***
	 * time:2018年8月2日下午5:32:40
	 */
	public void show() {
		System.out.println("学生的信息是:");
		System.out.println("姓名:"+getName()+"\n年龄"+getAge()
		+"\n性别"+getSex()+"\n工龄:"+work_age);
	}
}
public class Test {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Teacher teach=new Teacher("张三", "男", 22, 5);
		teach.show();
		teach.teach();
		System.out.println(teach.play());
		System.out.println("----------------------");
		Student stu=new Student("张二", "男", 22, "1002");
		stu.show();
		stu.study();
		System.out.println(stu.play());
	}

}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值