一、基础案例
题目1
一、 分析以下需求,并用代码实现:
- 定义Person类
属性:姓名name、年龄age;
方法:空参构造方法、满参构造方法、setXxx()、getXxx()、工作work。 - 根据人类,派生一个老师类Teacher
重写工作方法(老师的工作是要好好讲课)。 - 根据人类,派生一个学生类Student
重写工作方法(学生的工作是要好好学习)。 - 编写测试类分别对上述2类具体人物进行测试
- 要求运行结果:
学生的工作要好好学习
老师的工作要好好讲课
public class mainApp {
public static void main(String[] args) {
// TODO Auto-generated method stub
//1.1
Teacher t = new Teacher();
Student s = new Student();
t.work();
s.work();
}
}
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 extends Person{
public Teacher() {}
public Teacher(String name,int age) {
super(name,age);
}
public void work() {
System.out.println("老师的工作是要好好讲课");
}
}
public class Student extends Person{
public Student() {}
public Student(String name, int age) {
super(name,age);
}
public void work() {
System.out.println("学生的工作是要好好学习");
}
}
题目2
一、 分析以下需求,要求用代码实现:
- 定义手机类
方法:打电话(手机的功能是给某人打电话) - 根据手机类,派生一个新手机类
重写打电话功能(新功能可以开启视频电话,同时要包含老功能) - 编写测试类分别对上述2类手机进行测试
- 要求运行结果给林青霞打电话
开启视频功能
给林青霞打电话
public class mainApp {
public static void main(String[] args) {
// TODO Auto-generated method stub
Phone p = new Phone();
NewPhone np = new NewPhone();
p.call("李宗盛");
np.call("李宗盛");
}
}
public class Phone {
public Phone() {}
public void call(String name) {
System.out.println("给"+name+"打电话");
}
}
public class NewPhone extends Phone{
public NewPhone() {}
public void call(String name) {
System.out.println("开启视频功能");
System.out.println("给"+name+"打电话");
}
}
题目3
一、 分析以下需求,并用代码实现:
- 定义Animal动物类
方法:吃东西eat。 - 根据动物类,派生一个猫类Cat
重写吃东西方法(猫吃鱼)。 - 根据动物类,派生一个狗类Dog
重写吃东西方法(狗吃骨头)。
狗还有一个特有方法,狗看门 - 根据动物类,派生一个猪类Pig
重写吃东西方法(猪吃白菜)。 - 根据操作动物类AnimalOperator
方法:调用动物的吃方法 - 编写测试类分别对上述4类事物AnimalOperator、Cat、Dog、Pig创建对象,调用吃东西功能,进行测试
- 要求运行结果:
猫吃鱼
狗吃骨头
猪吃白菜
public class mainApp {
public static void main(String[] args) {
AnimalOperator ao = new AnimalOperator();
Cat cat = new Cat();
Dog dog = new Dog();
Pig pig = new Pig();
ao.useAnimal(cat);
ao.useAnimal(dog);
ao.useAnimal(pig);
}
}
public class Animal {
public Animal() {}
public void eat() {
System.out.println("动物吃东西");
}
}
public class Cat extends Animal{
public Cat() {}
public void eat() {
System.out.println("猫吃鱼");
}
}
public class Pig extends Animal{
public Pig() {}
public void eat() {
System.out.println("猪吃白菜");
}
}
public class AnimalOperator {
public void useAnimal(Animal animal) {
animal.eat();
}
}
二、扩展案例
题目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 mainApp {
public static void main(String[] args) {
AnimalOperator ao = new AnimalOperator();
Cat cat = new Cat();
Dog dog = new Dog();
Pig pig = new Pig();
ao.useAnimal(cat);
ao.useAnimal(dog);
ao.useAnimal(pig);
}
}
public class Person {
private String name;
private String gender;
private int age;
private String nationality;
public Person() {}
public Person(String name,int age,String gender,String nationality) {
this.name=name;
this.age = age;
this.gender = gender;
this.nationality = nationality;
}
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 String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getNationality() {
return nationality;
}
public void setNationality(String nationality) {
this.nationality = nationality;
}
public void work() {
}
public void eat() {}
public void sleep() {}
}
public class Student extends Person{
private String school;
private String stuNumber;
public Student() {}
public Student(String name, int age,String gender,String nationality,String school,String stuNumber) {
super(name,age,gender,nationality);
this.school =school;
this.stuNumber = stuNumber;
}
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 void work() {
System.out.println("学生需要学习!");
}
}
public class Worker extends Person{
private String unit;
private int workAge;
public Worker() {}
public String getUnit() {
return unit;
}
public void setUnit(String unit) {
this.unit = unit;
}
public int getWorkAge() {
return workAge;
}
public void setWorkAge(int workAge) {
this.workAge = workAge;
}
public void work() {
System.out.println("工人的工作是盖房子!");
}
}
public class StudentLeader extends Student{
private String job;
public StudentLeader() {}
public StudentLeader(String name, int age,String gender,String nationality,String school,String stuNumber,String job) {
super(name,age,gender,nationality,school,stuNumber);
this.job = job;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public void meeting() {
System.out.println("学生干部喜欢开会!");
}
}
题目2
一、 分析以下需求,并用代码实现
- 定义项目经理类
属性:
姓名 工号 工资 奖金
行为:
工作work - 定义程序员类
属性:
姓名 工号 工资
行为:
工作work - 要求:向上抽取一个父类,让这两个类都继承这个父类,共有的属性写在父类中,子类重写父类中的方法
- 编写测试类:完成这两个类的测试
public class mainApp {
public static void main(String[] args) {
Manager m = new Manager();
m.work();
Coder c = new Coder();
c.work();
}
}
public class Manager extends Employee{
private String bonus;
public Manager() {}
public Manager(String name,String id,double salary,String bonus) {
super(name,id,salary);
this.bonus = bonus;
}
public String getBonus() {
return bonus;
}
public void setBonus(String bonus) {
this.bonus = bonus;
}
public void work() {
System.out.println("经理在工作!");
}
}
public class Employee {
private String name;
private String id;
private double salary;
public Employee() {}
public Employee(String name,String id,double salary) {
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 Coder extends Employee{
public Coder() {}
public Coder(String name,String id,double salary) {
super(name,id,salary);
}
public void work() {
System.out.println("程序员在打代码!");
}
}
题目3
一、 分析以下需求,并用代码实现
-
已知学生类和老师类如下:
属性:
姓名,年龄
行为:
吃饭
老师有特有的方法:
讲课
学生有特有的方法:
学习 -
要求:向上抽取一个父类,让这两个类都继承这个父类,共有的属性写在父类中,子类重写父类中的方法
-
编写测试类:完成这两个类的测试
public class mainApp {
public static void main(String[] args) {
Teacher t = new Teacher("郭德纲",40);
Student s = new Student("郭麒麟",22);
t.eat();
t.Lecture();
s.eat();
s.learn();
}
}
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 eat() {
System.out.println("吃饭");
}
}
public class Teacher extends Person {
public Teacher() {}
public Teacher(String name, int age) {
super(name,age);
}
public void eat() {
System.out.println(this.getAge()+"岁的"+this.getName()+"老师在吃饭。");
}
public void Lecture() {
System.out.println(this.getAge()+"岁的"+this.getName()+"老师在上课");
}
}
public class Student extends Person{
public Student() {}
public Student(String name, int age) {
super(name,age);
}
public void eat() {
System.out.println(this.getAge()+"岁的"+this.getName()+"同学在吃饭。");
}
public void learn() {
System.out.println(this.getAge()+"岁的"+this.getName()+"同学在学习");
}
}
题目4
一、 分析以下需求,并用代码实现:
1.定义员工类:
属性:
工号,姓名
行为:
工作方法(用简单的输出语句模拟)
2.定义经理类:
属性:
工号,姓名,奖金
行为:
工作方法(管理员工,简单输出语句模拟)
3.定义服务员类:
属性:
工号,姓名
行为:
工作方法(为客户服务,简单输出语句模拟)
4.定义测试类:
分别创建经理类对象和服务员类对象
调用各自的工作方法
要求:
分析各个事物之间的继承关系,抽取出相关的类
public class MainApp {
public static void main(String[] args) {
Manager m = new Manager();
m.work();
Waiter w = new Waiter();
w.work();
}
}
public class Employee {
private String name;
private String id;
public Employee() {}
public Employee(String name,String id) {
this.name=name;
this.id = id;
}
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 void work() {
System.out.println("员工在工作");
}
}
public class Manager extends Employee{
private String bonus;
public Manager() {}
public Manager(String name,String id,String bonus) {
super(name,id);
this.bonus = bonus;
}
public String getBonus() {
return bonus;
}
public void setBonus(String bonus) {
this.bonus = bonus;
}
public void work() {
System.out.println("经理在管理员工!");
}
}
public class Waiter extends Employee{
public Waiter() {}
public Waiter(String name,String id) {
super(name,id);
}
public void work() {
System.out.println("为客户服务");
}
}