java_day7练习作业(面向对象下-1)

练习

练习1(继承)

1.1.训练描述:
一、分析以下需求,并用代码实现:
1.定义Person类
属性:姓名name、年龄age;
		方法:空参构造方法、满参构造方法、setXxx()、getXxx()、工作work。
		 
2.根据人类,派生一个老师类Teacher 
		重写工作方法(老师的工作是要好好讲课)。
			
3.根据人类,派生一个学生类Student 
		重写工作方法(学生的工作是要好好学习)。
		
4.编写测试类分别对上述2类具体人物进行测试

5.要求运行结果:
					学生的工作要好好学习
					老师的工作要好好讲课
package com.scy;	//基类 Person 

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(){
        System.out.println("人是要工作的");
    }
}
package com.scy;		//继承类 Student 

public class Student extends Person {
    public Student(){}
    public Student(String name,int age){
        super(name,age);
    }
    @Override
    public void work(){
        System.out.println("学生的工作是要好好学习");
    }
}
package com.scy;	//继承类 Teacher 

public class Teacher extends Person {
    public Teacher(){}
    public Teacher(String name,int age){
        super(name,age);
    }
    @Override
    public void work(){
        System.out.println("老师的工作是要好好讲课");
    }
}
package com.scy;	//测试类

public class MainApp {
    public static void main(String[] args) {
        Person p = new Student("wang",25);
        p.work();
        p = new Teacher();
        p.setName("liu");
        p.setName("30");
        p.work();
    }
}

练习2(继承/方法重写)

一、分析以下需求,要求用代码实现:
1.定义手机类
		方法:打电话(手机的功能是给某人打电话)
		
2.根据手机类,派生一个新手机类
		重写打电话功能(新功能可以开启视频电话,同时要包含老功能)
		
3.编写测试类分别对上述2类手机进行测试
4.要求运行结果:
				给林青霞打电话
				----------------------
				开启视频功能
				给林青霞打电话
package com.scy;	// Phone 父类

public class Phone {
    private String name;
    public Phone(){}
    public Phone(String name){
        this.name = name;
    }
    public void call(String name){
        System.out.println("给"+name+"打电话");
    }
}
package com.scy;	// NewPhone 子类

public class NewPhone extends Phone {
    public NewPhone(){}
    public NewPhone(String name){
        super(name);
    }
    @Override
    public void call(String name){
        System.out.println("开启视频功能");
        super.call(name);
    }
}
package com.scy;	//测试类

public class MainApp {
    public static void main(String[] args) {
       Phone p = new Phone("林青霞");
       p.call(p.getName());
       System.out.println("-----------------");
       Phone p1 = new NewPhone("林青霞");
       p1.call(p1.getName());
    }
}

练习3(多态)

一、分析以下需求,并用代码实现:
1.定义Animal动物类
		方法:吃东西eat。 
2.根据动物类,派生一个猫类Cat 
		重写吃东西方法(猫吃鱼)。	
3.根据动物类,派生一个狗类Dog 
		重写吃东西方法(狗吃骨头)。
		狗还有一个特有方法,狗看门
4.根据动物类,派生一个猪类Pig 
		重写吃东西方法(猪吃白菜)。
5.根据操作动物类AnimalOperator
方法:调用动物的吃方法 
6.编写测试类分别对上述4类事物AnimalOperator、Cat、Dog、Pig创建对象,调用吃东西功能,进行测试
7.要求运行结果:
	猫吃鱼
	狗吃骨头
	猪吃白菜
package com.scy;  // 父类animal

public class Animal {
    public void eat(){
        System.out.println("吃东西");
    }
}
package com.scy;	//子类cat

public class Cat extends Animal{
    @Override
    public void eat(){
        System.out.println("猫吃鱼");
    }
}
package com.scy; //子类dog

public class Dog extends Animal{
    public void eat(){
        System.out.println("狗吃骨头");
    }
    public void lookDoor(){
        System.out.println("狗看门");
    }
}
package com.scy;	// 子类pig

public class Pig extends Animal {
    public void eat(){
        System.out.println("猪吃白菜");
    }
}
package com.scy;	// 操作动物类
public class AnimalOperate {
    public void useAnimal(Animal a ){ //Animal a = new Cat();
        a.eat();
    }
}
package com.scy;	// 测试类

public class MainApp {
    public static void main(String[] args) {
        Cat c = new Cat();
        Dog d = new Dog();
        Pig p = new Pig();
        AnimalOperate ao = new AnimalOperate();
        ao.useAnimal(c);
        ao.useAnimal(d);
        ao.useAnimal(p);
    }
}

练习4(多态)

一、分析以下需求,并用代码实现:
1. 定义Person类
		属性:
			姓名name、性别gender、年龄age、国籍nationality;
		方法:吃饭eat、睡觉sleep,工作work。
	2.根据人类,派生一个学生类Student
		增加属性:
			学校school、学号stuNumber;
		重写工作方法(学生的工作是学习)。	
	3.根据人类,派生一个工人类Worker
		增加属性:
			单位unit、工龄workAge;
		重写工作方法(工人的工作是盖房子)。
	4.根据学生类,派生一个学生干部类 StudentLeader
		增加属性:
			职务job;
		增加方法:开会meeting。
	5.编写测试类分别对上述3类具体人物进行测试。
	6.要求运行结果:
		学生需要学习!
		工人的工作是盖房子!
		学生干部喜欢开会!
package com.scy;  //父类 person

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("工作");
    }

}
package com.scy;	// 子类 Student

public class Student extends Person {
    private String school;
    private int stdNumber;

    public Student(){}
    public Student(String name,String gender,int age,String nationality){
        super(name,gender,age,nationality);
    }

    public Student(String school, int stdNumber){
        this.school = school;
        this.stdNumber = stdNumber;
    }


    public String getSchool() {
        return school;
    }

    public void setSchool(String school) {
        this.school = school;
    }

    public int getStdNumber() {
        return stdNumber;
    }

    public void setStdNumber(int stdNumber) {
        this.stdNumber = stdNumber;
    }

    @Override
    public void work(){
        System.out.println("学生需要学习!");
    }
}
package com.scy;	//子类Worker

public class Worker extends Person {
    private String unit;
    private int workAge;
    public Worker(){}
    public Worker(String name,String gender,int age,String nationality){
        super(name,gender,age,nationality);
    }

    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;
    }

    @Override
    public void work(){
        System.out.println("工人的工作是盖房子!");
    }

}
package com.scy;	// 学生的子类StudentLeader

public class StudentLeader extends Student {
    private String job;

    public StudentLeader(){}

    public StudentLeader(String school, int stdNumber){
        super(school,stdNumber);
    }

    public String getJob() {
        return job;
    }

    public void setJob(String job) {
        this.job = job;
    }

    public void meeting(){
        System.out.println("学生干部喜欢开会!");
    }

}
package com.scy;	// Person操作类

public class PersonOperate {
    public void PersonWork(Person p){
        p.work();
    }
}
package com.scy;	// 测试类

public class MainApp {
    public static void main(String[] args) {
       PersonOperate po = new PersonOperate();
       Person p = new Student("wang","男",20,"中国");
       po.PersonWork(p);
       Person p1 = new Worker("liu","男",40,"韩国");
       po.PersonWork(p1);
       Student p3 = new StudentLeader("南京大学",10086);
       StudentLeader p4 = (StudentLeader) p3;
       p4.meeting();

    }
}

练习5(多态)

一、分析以下需求,并用代码实现
1.定义项目经理类 
			属性:
				姓名 工号 工资 奖金
			行为:
				工作work
2.定义程序员类
			属性:
				姓名 工号 工资
			行为:
				工作work
3.要求:向上抽取一个父类,让这两个类都继承这个父类,共有的属性写在父类中,子类重写父类中的方法
4.编写测试类:完成这两个类的测试
package com.scy;  // 父类 Person

public class Person {
    private String name;
    private int work_num;
    private int salary;

    public Person(){}

    public Person(String name, int work_num, int salary){
        this.name = name;
        this.work_num = work_num;
        this.salary = salary;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getWork_num() {
        return work_num;
    }

    public void setWork_num(int work_num) {
        this.work_num = work_num;
    }

    public int getSalary() {
        return salary;
    }

    public void setSalary(int salary) {
        this.salary = salary;
    }

    public void work(){
        System.out.println("人需要工作");
    }

}
package com.scy;	//子类Manager

public class Manager extends Person{
    private int bonus;

    public  Manager(){}

    public Manager(String name,int work_num,int salary){
        super(name,work_num,salary);
    }

    public int getBonus() {
        return bonus;
    }

    public void setBonus(int bonus) {
        this.bonus = bonus;
    }

    @Override
    public void work(){
        System.out.println("项目经理的工作是负责项目");
    }

}
package com.scy;	//子类Programmer

public class Programmer extends Person {
    public Programmer(){}
    public Programmer(String name,int work_num,int salary){
        super(name,work_num,salary);
    }

    @Override
    public void work(){
        System.out.println("程序员的工作是写代码");
    }
}
package com.scy;	// person操作类

public class PersonOperate {
    public void PersonWork(Person p){
        p.work();
    }
}
package com.scy;	//测试类

public class MainApp {
    public static void main(String[] args) {
       PersonOperate po = new PersonOperate();
       Person p1 = new Manager("wang",101,5000);
       po.PersonWork(p1);
       Person p2 = new Programmer("li",005,10000);
       po.PersonWork(p2);

    }
}

练习6(多态)

一、分析以下需求,并用代码实现
1.已知学生类和老师类如下:
			属性:
				姓名,年龄
			行为:
				吃饭
			老师有特有的方法:
				讲课
			学生有特有的方法:
				学习

2.要求:向上抽取一个父类,让这两个类都继承这个父类,共有的属性写在父类中,子类重写父类中的方法
3.编写测试类:完成这两个类的测试
package com.scy;	// 父类Person

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;
    }
    
}
package com.scy;	// 子类Student

public class Student extends Person {
    public Student(){}
    public Student(String name,int age){
        super(name,age);
    }
    public void workStudent(){
        System.out.println("学生爱学习");
    }
}
package com.scy;	// 子类Teacher

public class Teacher extends Person {
    public Teacher(){}
    public Teacher(String name,int age){
        super(name,age);
    }
    public void workTeacher(){
        System.out.println("老师爱讲课");
    }
}
package com.scy;	// 测试类

public class MainApp {
    public static void main(String[] args) {
       Person p1 = new Student("wang",15);
       Student std = (Student) p1;
       std.workStudent();
       Person p2 = new Teacher("liu",30);
       Teacher t = (Teacher) p2;
       t.workTeacher();
    }
}

练习7(多态)

一、分析以下需求,并用代码实现:
	1.定义员工类:
		属性:
			工号,姓名
		行为:
			工作方法(用简单的输出语句模拟)
	2.定义经理类:
		属性:
			工号,姓名,奖金
		行为:
			工作方法(管理员工,简单输出语句模拟)
	3.定义服务员类:
		属性:
			工号,姓名
		行为:
			工作方法(为客户服务,简单输出语句模拟)
	4.定义测试类:
		分别创建经理类对象和服务员类对象
		调用各自的工作方法
		要求:
			分析各个事物之间的继承关系,抽取出相关的类
package com.scy;

public class Staff {
    private int work_num;
    private String name;

    public Staff(){}
    public Staff(int work_num, String name){
        this.work_num = work_num;
        this.name = name;
    }

    public void method(){
        System.out.print("员工应该做的事");
    }
}
package com.scy;

public class Manager extends Staff{
    private int bonus;

    public Manager(){}

    public Manager(int work_num,String name){
        super(work_num,name);
    }

    public int getBonus() {
        return bonus;
    }

    public void setBonus(int bonus) {
        this.bonus = bonus;
    }

    @Override
    public void method(){
        super.method();
        System.out.print(",管理员工");
        System.out.println();
    }

}
package com.scy;

public class Waiter extends Staff {


    public Waiter(){}

    public Waiter(int work_num,String name){
        super(work_num,name);
    }

    @Override
    public void method(){
        super.method();
        System.out.print(",为客户服务");
        System.out.println();
    }
}
package com.scy;

public class MainApp {
    public static void main(String[] args) {
      Staff s1 = new Manager(001,"wang");
      s1.method();
      Staff s2 = new Waiter(002,"liu");
      s2.method();
    }
}

版权声明:本文为rinima438原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>