一、基础案例
1.训练案例1
1.1.训练描述:【继承】
一、分析以下需求,并用代码实现:
1.定义Person类
属性:姓名name、年龄age;
方法:空参构造方法、满参构造方法、setXxx()、getXxx()、工作work。
2.根据人类,派生一个老师类Teacher
重写工作方法(老师的工作是要好好讲课)。
3.根据人类,派生一个学生类Student
重写工作方法(学生的工作是要好好学习)。
4.编写测试类分别对上述2类具体人物进行测试
5.要求运行结果:
学生的工作要好好学习
老师的工作要好好讲课
1.2.操作步骤描述
public class person {
private String name;
private int age;
public person(){
}
public person(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 void work(){
}
}
public class teacher {
public void work(){
System.out.println("老师的工作要好好讲课");
}
}
public class stu extends person {
public void work(){
System.out.println("学生的工作要好好学习");
}
}
public class test1 {
public static void main(String[] args) {
stu s1=new stu();
s1.work();
teacher s2=new teacher();
s2.work();
}
}
2.训练案例2
2.1.训练描述:【继承、方法重写】
一、分析以下需求,要求用代码实现:
1.定义手机类
方法:打电话(手机的功能是给某人打电话)
2.根据手机类,派生一个新手机类
重写打电话功能(新功能可以开启视频电话,同时要包含老功能)
3.编写测试类分别对上述2类手机进行测试
4.要求运行结果:
给林青霞打电话
----------------------
开启视频功能
给林青霞打电话
2.2.操作步骤描述
public class phone {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void call(String name){
System.out.println("给"+name+"打电话");
}
}
public class newphone extends phone{
public void call(String name) {
System.out.println("可以视频");
super.call(name);
}
}
public class testhone {
public static void main(String[] args) {
phone p=new phone();
p.call("老王");
newphone p1=new newphone();
p1.call("老王");
}
}
3.训练案例3
3.1.训练描述:【多态】
一、分析以下需求,并用代码实现:
1.定义Animal动物类
方法:吃东西eat。
2.根据动物类,派生一个猫类Cat
重写吃东西方法(猫吃鱼)。
3.根据动物类,派生一个狗类Dog
重写吃东西方法(狗吃骨头)。
狗还有一个特有方法,狗看门
4.根据动物类,派生一个猪类Pig
重写吃东西方法(猪吃白菜)。
5.根据操作动物类AnimalOperator
方法:调用动物的吃方法
6.编写测试类分别对上述4类事物AnimalOperator、Cat、Dog、Pig创建对象,调用吃东西功能,进行测试
7.要求运行结果:
猫吃鱼
狗吃骨头
猪吃白菜
3.2.操作步骤描述
略
public class animal {
public void eat(){
}
}
public class cat extends animal{
public void eat(){
System.out.println("猫吃鱼");
}
}
public class dog extends animal {
public void eat(){
System.out.println("狗吃骨头");
}
public void lookdoor(){
System.out.println("狗看门");
}
}
public class pig extends animal {
public void eat(){
System.out.println("猪吃白菜");
}
}
public class animalOperator extends animal{
public void dongzuo(animal a){
a.eat();
}
}
public class testanimal {
public static void main(String[] args) {
animalOperator a=new animalOperator();
cat c=new cat();
c.eat();
dog d=new dog();
d.eat();
d.lookdoor();
pig p=new pig();
p.eat();
}
}
二、扩展案例
1.训练案例1
1.1.训练描述:
一、分析以下需求,并用代码实现:
- 定义Person类
属性:
姓名name、性别gender、年龄age、国籍nationality;
方法:吃饭eat、睡觉sleep,工作work。
2.根据人类,派生一个学生类Student
增加属性:
学校school、学号stuNumber;
重写工作方法(学生的工作是学习)。
3.根据人类,派生一个工人类Worker
增加属性:
单位unit、工龄workAge;
重写工作方法(工人的工作是盖房子)。
4.根据学生类,派生一个学生干部类 StudentLeader
增加属性:
职务job;
增加方法:开会meeting。
5.编写测试类分别对上述3类具体人物进行测试。
6.要求运行结果:
学生需要学习!
工人的工作是盖房子!
学生干部喜欢开会!
1.2.操作步骤描述
public class person {
private String name;
private String gender;
private int age;
private String nationality;
public person(){
}
public person(String name,String gender,int age,String nationality){
this.name=name;
this.gender=gender;
this.age=age;
this.nationality=nationality;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getNationality() {
return nationality;
}
public void setNationality(String nationality) {
this.nationality = nationality;
}
public void eat(){
System.out.println("人要吃饭");
}
public void sleep(){
System.out.println("人要睡觉");
}
public void work(){
System.out.println("人要工作");
}
}
public class stu extends person {
private String school;
private int stuNum;
public stu(){
super();
}
public stu(String name,String gender,int age,String nationality,String school, int stuNum){
super(name,gender,age,nationality);
this.school=school;
this.stuNum=stuNum;
}
public void eat(){
System.out.println("学生的工作是学习");
}
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
public int getStuNum() {
return stuNum;
}
public void setStuNum(int stuNum) {
this.stuNum = stuNum;
}
}
public class worker extends person{
private String unti;
private int workage;
public worker(){
super();
}
public worker(String name,String gender,int age,String nationality,String unti,int workage){
super(name,gender,age,nationality);
this.unti=unti;
this.workage=workage;
}
public void work(){
System.out.println("工人的工作是盖房子");
}
public String getUnti() {
return unti;
}
public void setUnti(String unti) {
this.unti = unti;
}
public int getWorkage() {
return workage;
}
public void setWorkage(int workage) {
this.workage = workage;
}
}
public class stuleader extends person{
private String job;
public stuleader(){
super();
}
public stuleader(String name,String gender,int age,String nationality,String job){
super(name,gender,age,nationality);
this.job=job;
}
public void meeting(){
System.out.println("sb学生干部喜欢开会!");
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
}
public class testperson {
public static void main(String[] args) {
stu s=new stu("lili","一",15,"zk","北大",110);
System.out.println(s.getName()+", "+s.getGender()+", "+s.getAge()+", "+s.getNationality()+", "+s.getSchool()+", "+s.getStuNum());
s.eat();
worker w=new worker("laowang","二",16,"mg","zx",5);
System.out.println(w.getName()+", "+w.getGender()+", "+w.getAge()+", "+w.getNationality()+", "+w.getUnti()+", "+w.getWorkage());
w.work();
stuleader L=new stuleader("hehe","二",18,"zk","sb");
System.out.println(L.getName()+", "+L.getGender()+", "+L.getAge()+", "+L.getNationality()+", "+L.getJob());
L.meeting();
}
}
2.训练案例2
2.1.训练描述:
一、分析以下需求,并用代码实现
1.定义项目经理类
属性:
姓名 工号 工资 奖金
行为:
工作work
2.定义程序员类
属性:
姓名 工号 工资
行为:
工作work
3.要求:向上抽取一个父类,让这两个类都继承这个父类,共有的属性写在父类中,子类重写父类中的方法
4.编写测试类:完成这两个类的测试
2.2.操作步骤描述
public class yg {
private String name;
private int num;
private int salary;
public yg(){
}
public yg(String name,int num,int salary){
this.name=name;
this.num=num;
this.salary=salary;
}
public void work(){
System.out.println("員工需要工作");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
public class pm extends yg{
private int bonus;
public pm(){
super();
}
public pm(String name,int num,int salary,int bonus){
super(name,num,salary);
this.bonus=bonus;
}
public int getBonus() {
return bonus;
}
public void setBonus(int bonus) {
this.bonus = bonus;
}
public void work(){
System.out.println("管理");
}
}
public class Coder extends yg {
public Coder() {
super();
}
public Coder(String name,int num,int salary){
super();
}
public void work(){
System.out.println("敲代码");
}
}
public class testyg {
public static void main(String[] args) {
pm p =new pm("laowang",001,1000,5000);
p.work();
Coder c=new Coder("fan",002,20000);
c.work();
}
}
3.训练案例3
3.1.训练描述:
一、分析以下需求,并用代码实现
1.已知学生类和老师类如下:
属性:
姓名,年龄
行为:
吃饭
老师有特有的方法:
讲课
学生有特有的方法:
学习
2.要求:向上抽取一个父类,让这两个类都继承这个父类,共有的属性写在父类中,子类重写父类中的方法
3.编写测试类:完成这两个类的测试
3.2.操作步骤描述
public class Person {
private String name;
private int age;
public Person() {
super();
}
public Person(String name, int age) {
super();
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 void eat(){
System.out.println("吃饭");
}
public void work(){
System.out.println("人都需要工作");
}
}
public class Student extends Person{
public Student() {
super();
}
public Student(String name, int age) {
super(name, age);
}
public void work(){
System.out.println("学生要学习");
}
}
public class Teacher extends Person {
public Teacher() {
super();
}
public Teacher(String name, int age) {
super(name, age);
// TODO Auto-generated constructor stub
}
public void work(){
System.out.println("老师要讲课");
}
}
public class Task03 {
public static void main(String[] args) {
Student s = new Student2("hehe", 20);
s.work();
s.eat();
Teacher t = new Teacher("lili", 18);
t.work();
t.eat();
}
}
4.训练案例4
4.1.训练描述:
一、分析以下需求,并用代码实现:
1.定义员工类:
属性:
工号,姓名
行为:
工作方法(用简单的输出语句模拟)
2.定义经理类:
属性:
工号,姓名,奖金
行为:
工作方法(管理员工,简单输出语句模拟)
3.定义服务员类:
属性:
工号,姓名
行为:
工作方法(为客户服务,简单输出语句模拟)
4.定义测试类:
分别创建经理类对象和服务员类对象
调用各自的工作方法
要求:
分析各个事物之间的继承关系,抽取出相关的类
4.2.操作步骤描述
public class yg {
private String name;
private String id;
private double salary;
public yg() {
super();
// TODO Auto-generated constructor stub
}
public yg(String name, String id, double salary) {
super();
this.name = name;
this.id = id;
this.salary = salary;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
public void work(){
System.out.println("员工都要工作");
}
}
public class pm extends yg{
private double bonus;
public pm() {
super();
}
public pm(String name, String id, double salary, double bonus) {
super(name, id, salary);
this.bonus = bonus;
}
public double getBonus() {
return bonus;
}
public void setBonus(double bonus) {
this.bonus = bonus;
}
@Override
public void work() {
System.out.println(this.getName() + "..." + this.getId() + "...." + this.getSalary() + "..." + this.getBonus() + ",项目经理正在上班");
}
}
public class fwy extends yg {
public fwy() {
super();
}
public fwy(String name, String id) {
super(name, id);
}
@Override
public void work() {
System.out.println(this.getName() + "..." + this.getId() + ",服务员跪着服务顾客");
}
}
public class testyg2 {
public static void main(String[] args) {
pm p=new pm("wang","30",10000);
p.work();
fwy f=new fwy("liu","30");
f.work();
}
}