一、 基础案例
1. 训练案例1
1.1. 训练描述:【继承】
一、 分析以下需求,并用代码实现:
- 定义Person类
属性:姓名name、年龄age;
方法:空参构造方法、满参构造方法、setXxx()、getXxx()、工作work。 - 根据人类,派生一个老师类Teacher
重写工作方法(老师的工作是要好好讲课)。 - 根据人类,派生一个学生类Student
重写工作方法(学生的工作是要好好学习)。 - 编写测试类分别对上述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 void word(){
System.err.println("每个人要好好工作");
}
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 class Teacher extends Person{
public Teacher() {
super();
// TODO Auto-generated constructor stub
}
public Teacher(String name, int age) {
super(name, age);
// TODO Auto-generated constructor stub
}
public void word(){
System.out.println("老师的工作要好好讲课");
}
}
public class Student extends Person{
public Student() {
super();
// TODO Auto-generated constructor stub
}
public Student(String name, int age) {
super(name, age);
// TODO Auto-generated constructor stub
}
public void word(){
System.out.println("学生的工作要好好学习");
}
}
public class Main701 {
public static void main(String[] args) {
Person t = new Teacher("王老师",45);
System.out.println(t.getName()+"今年年龄是"+t.getAge());
t.word();
Person s = new Student("小明同学",15);
System.out.println(s.getName()+"今年年龄是"+s.getAge());
s.word();
}
}
2. 训练案例2
2.1. 训练描述:【继承、方法重写】
- 分析以下需求,要求用代码实现:
-
定义手机类
方法:发短信,打电话(手机的功能是给某人打电话) -
根据手机类,派生一个新手机类
重写打电话功能(新功能可以开启视频电话,同时要包含老功能) -
编写测试类分别对上述2类手机进行测试
-
要求运行结果:
给林青霞打电话
开启视频功能给林青霞发短信
public class Iphone3 {
public void call(){
System.out.println("给林青霞打电话");
}
public void send(){
System.out.println("给林青霞发短信");
}
}
public class Iphone4 extends Iphone3{
@Override
public void call(){
System.out.println("给林青霞打电话");
System.out.println("开启视频功能");
}
}
public class Main702 {
public static void main(String[] args) {
Iphone4 phone = new Iphone4();
phone.call();
phone.send();
}
}
3. 训练案例3
3.1. 训练描述:【多态】
一、 分析以下需求,并用代码实现:
- 定义Animal动物类
方法:吃东西eat。 - 根据动物类,派生一个猫类Cat
重写吃东西方法(猫吃鱼)。 - 根据动物类,派生一个狗类Dog
重写吃东西方法(狗吃骨头)。
狗还有一个特有方法,狗看门 - 根据动物类,派生一个猪类Pig
重写吃东西方法(猪吃白菜)。 - 根据操作动物类AnimalOperator
方法:调用动物的吃方法 - 编写测试类分别对上述4类事物AnimalOperator、Cat、Dog、Pig创建对象,调用吃东西功能,进行测试
- 要求运行结果:
猫吃鱼
狗吃骨头
猪吃白菜
public class Animal {
public void eat(){
System.out.println("吃东西");
}
}
public class Cat extends Animal{
@Override
public void eat(){
System.out.println("猫吃鱼");
}
}
public class Dog extends Animal{
public void eat(){
System.out.println("狗吃骨头");
}
}
public class Pig extends Animal{
public void eat(){
System.out.println("猪吃白菜");
}
}
public class AnimalOperator {
public void useAnimal(Animal a) {
a.eat();
}
}
public class Main703 {
public static void main(String[] args) {
Cat c = new Cat();
Dog d = new Dog();
Pig p = new Pig();
AnimalOperator chi = new AnimalOperator();
chi.useAnimal(c);
chi.useAnimal(d);
chi.useAnimal(p);
}
}
二、 扩展案例
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.要求运行结果:
学生需要学习!
工人的工作是盖房子!
学生干部喜欢开会!
public class Person {
private String name;
private String gender;
private int age;
private String nationality;
public void eat() {
}
public void sleep() {
}
public void work() {
}
}
public class Student extends Person{
private String school;
private String stuNumber;
@Override
public void work(){
System.out.println("学生的工作是学习");
}
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
public String getStuNumber() {
return stuNumber;
}
public void setStuNumber(String stuNumber) {
this.stuNumber = stuNumber;
}
}
public class Worker extends Person{
private String unit;
private int Worker;
@Override
public void work(){
System.out.println("工人的工作是盖房子");
}
}
public class StudentLeader {
private String job;
public void meeting(){
System.out.println("学生干部喜欢开会!");
}
}
public class Main711 {
public static void main(String[] args) {
Student s1 = new Student();
s1.work();
Worker w = new Worker();
w.work();
StudentLeader s2 = new StudentLeader();
s2.meeting();
}
}
2. 训练案例2
2.1. 训练描述:
一、 分析以下需求,并用代码实现
- 定义项目经理类
属性:
姓名 工号 工资 奖金
行为:
工作work - 定义程序员类
属性:
姓名 工号 工资
行为:
工作work - 要求:向上抽取一个父类,让这两个类都继承这个父类,共有的属性写在父类中,子类重写父类中的方法
- 编写测试类:完成这两个类的测试
public class Staff {
private String name;
private String num;
private int wage;
public void work(){
}
}
public class Manager extends Staff {
private int bonus;
@Override
public void work() {
System.out.println("经理的工作是管理项目");
}
}
public class Programmer extends Staff{
@Override
public void work() {
System.out.println("程序员的工作是敲代码");
}
}
public class Main705 {
public static void main(String[] args) {
Programmer p = new Programmer();
p.work();
Manager m = new Manager();
m.work();
}
}