一、实验目的
1.掌握父类的定义方法
2.掌握子类的定义方法
3.掌握继承的使用方式
二、实验硬、软件环境
Windows计算机和Eclipse软件
三、实验内容及步骤
1. 现在个电子宠物系统,父类Pet,子类Dog和Penguin,要求子类继承父类,并重写父类方法,并打印宠物信息。
代码及运行结果如下:
父类:
package 实验六;
public class Pet {
private String name;
private int health;//健康值
private int love;//亲密度
public Pet() { }//无参的构造方法
public Pet(String name,int health,int love) {
this.name = name;
this.health = health;
this.love = love;}
public String getName() {
return name;}
public void setName(String name) {
this.name = name;}
public int getHealth() {
return health;}
public void setHealth(int health) {
this.health = health;}
public int getLove() {
return love;}
public void setLove(int love) {
this.love = love;}
void show() {
System.out.print("宠物的自我介绍:\n我的名字叫"+getName()+
",健康值是"+getHealth()+
",和主人的亲密度是"+getLove());}}
子类:
package 实验六;
public class Dog extends Pet {
private String strain;//strain-品种
public Dog() {}
public String getStrain() {
return strain;}
public void setStrain(String strain) {
this.strain = strain;}
void show() {
super.show();
System.out.println(",我的品种是"+getStrain());}}
package 实验六;
public class Penguin extends Pet{//企鹅
private String sex;
public Penguin(){}
public String getSex() {
return sex;}
public void setSex(String sex) {
this.sex = sex;}
void show() {
super.show();
System.out.println(",我的性别是"+getSex());}}
测试类:
package 实验六;
public class 实验六 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Dog dog = new Dog();
dog.setName("marry");
dog.setHealth(100);
dog.setLove(93);
dog.setStrain("金毛");
dog.show();
Penguin penguin = new Penguin();
penguin.setName("胖胖");
penguin.setHealth(98);
penguin.setLove(78);
penguin.setSex("公");
penguin.show();}}
2.假设教师工作证包括编号、姓名、性别、出生年月、职务和签发时间;学生证包括编号、姓名、性别、出生年月、系别、入校时间。请为教师工作证与学生工作证设计一个类结构,尽可能保证代码的复用率,并输出教师工作证和学生工作证信息。
代码如下:
父类:
package 实验六;
public class 证 {
private int bianhao;
private String name;
private String sex;
private String brithday;
public 证() {}
public 证(String name,String sex, String brithday) {
this.name = name;
this.sex = sex;
this.brithday = brithday;}
public int getBianhao() {
return bianhao;}
public void setBianhao(int bianhao) {
this.bianhao = bianhao;}
public String getName() {
return name;}
public void setName(String name) {
this.name = name;}
public String getSex() {
return sex;}
public void setSex(String sex) {
this.sex = sex;}
public String getBrithday() {
return brithday;}
public void setBrithday(String brithday) {
this.brithday = brithday;}
void show() {
System.out.print("\n编号: "+getBianhao()+" 姓名: "+getName()+" 性别"+getSex()+" 出生年月: "+getBrithday());}}
子类:
package 实验六;
public class 教师工作证 extends 证 {
private String post;//职务
private String timefiled;//签发时间
public 教师工作证() { }
public 教师工作证(String post,String timefiled) {
this.post = post;
this.timefiled = timefiled;}
public String getPost() {
return post;}
public void setPost(String post) {
this.post = post;}
public String getTimefiled() {
return timefiled;}
public void setTimefiled(String timefiled) {
this.timefiled = timefiled;}
void show() {
super.show();
System.out.println(" \n职务: "+getPost()+" 签发时间: "+getTimefiled());}}
package 实验六;
public class 学生证 extends 证 {
private String dept;
private String ruxiaoshijian;
public 学生证() { }
public String getDept() {
return dept;}
public void setDept(String dept) {
this.dept = dept;}
public String getRuxiaoshijian() {
return ruxiaoshijian;}
public void setRuxiaoshijian(String ruxiaoshijian) {
this.ruxiaoshijian = ruxiaoshijian;}
void show() {
super.show();
System.out.println("\n系别: "+getDept()+" 入学时间:"+getRuxiaoshijian());}}
测试类:
package 实验六;
public class 实验七 {
public static void main(String[] args) {
// TODO Auto-generated method stub
教师工作证 teacher = new 教师工作证();
teacher.setBianhao(106);
teacher.setName("肖小");
teacher.setSex("男生");
teacher.setBrithday("1987年6月9日");
teacher.setPost("主任");
teacher.setTimefiled("2001年9月1日");
teacher.show();
学生证 student = new 学生证();
student.setBianhao(221);
student.setName("竹狄");
student.setSex("女生");
student.setBrithday("1987年6月9日");
student.setDept("计算机");
student.setRuxiaoshijian("2002年8月1日");
student.show();}}
3.定义一个人的类,属性有名字、年龄,写一个能输出各个属性值的方法showinfo()。定义一个学生类,属性有性别。学生类继承人类。
要求:
- 父类的属性赋值用构造方法来实现(分别用有参数构造方法和无参数构造方法实现)。
- 子类的属性也用构造方法来赋值。
- 在子类中重写父类的showinfo()方法。
- 声明学生类的对象,调用学生的显示信息的方法。
代码如下:
父类:
package 实验六;
public class 人 {
private String name;
private int age;
public 人() { }//无参的构造方法
public 人(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;}
void showinfo() {
System.out.println("学生姓名:"+getName()+" 年龄:"+getAge());}}
子类:
package 实验六;
public class 学生类 extends 人 {
String sex;
public 学生类() { }
public String getSex() {
return sex;}
public void setSex(String sex) {
this.sex = sex;}
void showinfo() {
super.showinfo();
System.out.print(" 性别:"+getSex());}}
测试类:
package 实验六;
public class 实验六3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
学生类 student = new 学生类();
student.setName("张之");
student.setAge(16);
student.setSex("女生");
student.showinfo();}}
4.父类Employee的属性包括name、sex,带一个构造方法Employee(String n,char s)。子类Worker继承自Employee,属性包括类别char category、是否提供服装津贴boolean dressAllowance,有一个构造方法负责构造所有属性,还有一个自定义方法isDressAll(),这个方法负责通过判断dressAllowance的值输出决定是否提供服装津贴。
代码如下:
父类:
package 实验六;
public class Employee {
String name;
char sex;
public Employee(){}
public Employee(String n,char s) {
this.name = n;
this.sex = s;} }
子类:
package 实验六;
public class Worker extends Employee{
char category;
boolean dressAllowance;
public Worker() {}
public Worker(String n,char s,char category,boolean dressAllowance) {
this.name = n;
this.sex = s;
this.category = category;
this.dressAllowance = dressAllowance;}
void isDressAll() {
if(dressAllowance) {
System.out.println("提供服装津贴");
}else {
System.out.println("不提供服装津贴");}}}
测试类:
package 实验六;
public class 实验六4 {
public static void main(String[] args) {
Worker worker = new Worker("李昀",'男','a',true);
worker.isDressAll();}}