java疯狂讲义第五版第五章练习

第一题,定义一个学生类,提供成员变量的setter方法和getter方法,和带全体变量的构造器

public class Student{
	private String name;
	private int age;
	private String gender;
	private String phone;
	private String address;
	private String email;
	public void setName(String name){
		this.name=name;
	}
	public void setAge(int age){
		this.age=age;
	}
	public void setGender(String gender){
		this.gender=gender;
	}
	public void setPhone(String phone){
		this.phone=phone;
	}
	public void setAddress(String address){
		this.address=address;
	}
	public void setEmail(String email){
		this.email=email;
	}
	public String getName(){
		return this.name;
	}
	public int getAge(){
		return this.age;
	}
	public String getPhone(){
		return this.phone;
	}
	public String getGender(){
		return this.gender;
	}
	public String getAddress(){
		return this.address;
	}
	public String getEmail(){
		return this.email;
	}
	/**
	*空构造器
	*/
	public Student(){
	}
	/**
	*含有全部属性的构造器
	*/
	public Student(String name,int age,String gender,String phone,String address,String email)
	{
		this.name=name;
		this.age=age;
		this.gender=gender;
		this.phone=phone;
		this.address=address;
		this.email=email;
	}
	public void eat(){
		System.out.println("学生具有吃的功能");
	}
	public void drink(){
		System.out.println("学生具有喝的功能");
	}
	public void sleep(){
		System.out.println("学生会睡觉");
	}
} 

第二题,利用第一题的类,定义一个数组保存多个数据,并提供查询方法

`

public class Student{
	private String name;
	private int age;
	private String gender;
	private String phone;
	private String address;
	private String email;
	public void setName(String name){
		this.name=name;
	}
	public void setAge(int age){
		this.age=age;
	}
	public void setGender(String gender){
		this.gender=gender;
	}
	public void setPhone(String phone){
		this.phone=phone;
	}
	public void setAddress(String address){
		this.address=address;
	}
	public void setEmail(String email){
		this.email=email;
	}
	public String getName(){
		return this.name;
	}
	public int getAge(){
		return this.age;
	}
	public String getPhone(){
		return this.phone;
	}
	public String getGender(){
		return this.gender;
	}
	public String getAddress(){
		return this.address;
	}
	public String getEmail(){
		return this.email;
	}
	/**
	*空构造器
	*/
	public Student(){
	}
	/**
	*含有全部属性的构造器
	*/
	public Student(String name,int age,String gender,String phone,String address,String email)
	{
		this.name=name;
		this.age=age;
		this.gender=gender;
		this.phone=phone;
		this.address=address;
		this.email=email;
	}
	public void eat(){
		System.out.println("学生具有吃的功能");
	}
	public void drink(){
		System.out.println("学生具有喝的功能");
	}
	public void sleep(){
		System.out.println("学生会睡觉");
	}
} 

第三题,定义普通人,老师,班主任,学生,学校这些类,并提供测试方法

import java.util.*;
import java.io.*;
public class Person{
	/**
	*成员变量
	*/
	public int age;
	public String work;
	public String name;
	/**
	*含参构造器
	*/
	public Person(int age,String work,String name){
		do{
			if(age>=0)this.age=age;
			else {
				System.out.println("年龄输入错误,请重新输入!");
				var sc=new Scanner(System.in);
				age=sc.nextInt();
				this.age=age;
			}
		}while(age<0);
		this.work=work;
		this.name=name;
	}
	/**
	*无参构造器
	*/
	public Person(){}

}
public class School{
	/**
	*成员变量
	*/
	private Student[] student;
	private Teacher[] teacher;
	private TeacherAdviser[] teacherAdviser;
	/**
	*student的get方法
	*/
	public Student[] getStudent(){
		return this.student;
	}
	/**
	*teacher的get方法
	*/
	public Teacher[] getTeacher(){
		return this.teacher;
	}
	/**
	*teacherAdviser的get方法
	*/
	public TeacherAdviser[] getTeacherAdvisrer(){
		return this.teacherAdviser;
	}
	/**
	*student的set方法
	*/
	public void setStudent(Student[] student){
		this.student=student;
	}
	/**
	*teacher的set方法
	*/
	public void setTeacher(Teacher[] teacher){
		this.teacher=teacher;
	}
	/**
	*teacherAdviser的set方法
	*/
	public void setTeacherAdviser(TeacherAdviser[] teacherAdviser)
	{
		this.teacherAdviser=teacherAdviser;
	}
}
public class Student extends Person
{
	/**
	*含参构造器
	*/
	public Student(int age,String name){
		super(age,"学生",name);
	}
	/**
	*描述学生任务
	*/
	public void study(){
		System.out.println("学生的工作是努力学习");
	}
}
public class Teacher extends Person
{
	/**
	*含参构造器
	*/
	public Teacher(int age,String name){
		super(age,"老师",name);
	}
	/**
	*无参构造器
	*/
	public  Teacher(){

	}
	/**
	*功能描述
	*/
	public void teach(){
		System.out.println("老师的工作是教导学生");
	}

}
public class TeacherAdviser extends Teacher
{
	/**
	*成员变量
	*/
	private String partTime="班主任";
	/**
	*含参构造器
	*/
	public TeacherAdviser(int age,String name){
		super(age,name);
	}
	/**
	*无参构造器
	*/
	public TeacherAdviser(){

	}
	/**
	*功能描述
	*/
	public void teach(){
		super.teach();
		System.out.println("班主任还要管理一个班级");
	}

}
import java.util.*;
import java.io.*;
public class test{
	/**
	*主调函数
	*/
	public static void main(String[] args){
		var tr=new test();
		School br=new School();
		br.setStudent(tr.newStudent(3));
		br.setTeacher(tr.newTeacher(2));
		br.setTeacherAdviser(tr.newTeacherAdviser(1));
		tr.printl(br);
	}
	/**
	*创建一组学生对象
	*/
	public Student[] newStudent(int a){
		Student[] student=new Student[a];
		var sc=new Scanner(System.in);
		System.out.println("请依次输入学生年龄,姓名");
		for(int i=0;i<a;i++)
		{
			student[i]=new Student(sc.nextInt(),sc.next());
		}
		return student;
	}
	/**
	*创建一组老师对象
	*/	
	public Teacher[] newTeacher(int a){
		Teacher[] teacher=new Teacher[a];
		var sc=new Scanner(System.in);
		System.out.println("请依次输入老师年龄,姓名");
		for(int i=0;i<a;i++)
		{
			teacher[i]=new Teacher(sc.nextInt(),sc.next());
		}
		return teacher;
	}
	/**
	*创建一组班主任对象
	*/
	public TeacherAdviser[] newTeacherAdviser(int a)
	{
		TeacherAdviser[] teacherAdviser=new TeacherAdviser[a];
		var sc=new Scanner(System.in);
		System.out.println("请依次输入班主任年龄,姓名");
		for(int i=0;i<a;i++)
		{
			teacherAdviser[i]=new TeacherAdviser(sc.nextInt(),sc.next());
		}
		return teacherAdviser;
	}
	/**
	*输出School对象的成员变量
	*/
	public void printl(School br){
		for(Student a:br.getStudent())
		{
			System.out.println("学生姓名:"+a.name+" 年龄:"+a.age);
		}
		for(Teacher a:br.getTeacher())
		{
			System.out.println("老师姓名:"+a.name+" 年龄:"+a.age);
		}
		for(TeacherAdviser a:br.getTeacherAdvisrer())
		{
			System.out.println("班主任姓名:"+a.name+" 年龄:"+a.age);
		}
	}
}

第四题,改写第一题程序,利用组合来实现类的复用

public class Person{
	public void eat(){
		System.out.println("通过牙齿咀嚼吃东西");
	}
	public void drink(){
		System.out.println("有喝的能力");
	}
	public void sleep(){
		System.out.println("困了就要睡觉");
	}
}
public class Student{
	private String name;
	private int age;
	private String gender;
	private String phone;
	private String address;
	private String email;
	Person br=new Person();
	public void setName(String name){
		this.name=name;
	}
	public void setAge(int age){
		this.age=age;
	}
	public void setGender(String gender){
		this.gender=gender;
	}
	public void setPhone(String phone){
		this.phone=phone;
	}
	public void setAddress(String address){
		this.address=address;
	}
	public void setEmail(String email){
		this.email=email;
	}
	public String getName(){
		return this.name;
	}
	public int getAge(){
		return this.age;
	}
	public String getPhone(){
		return this.phone;
	}
	public String getGender(){
		return this.gender;
	}
	public String getAddress(){
		return this.address;
	}
	public String getEmail(){
		return this.email;
	}
	/**
	*空构造器
	*/
	public Student(){
	}
	/**
	*含有全部属性的构造器
	*/
	public Student(String name,int age,String gender,String phone,String address,String email)
	{
		this.name=name;
		this.age=age;
		this.gender=gender;
		this.phone=phone;
		this.address=address;
		this.email=email;
	}
	public void eat(){
		br.eat();
	}
	public void drink(){
		br.drink();
	}
	public void sleep(){
		br.sleep();
	}
} 

第五题,定义一个交通工具类,提供多个构造器,将相同部分提为代码块

public class Tool{
	{
		System.out.println("这是交通工具");
	}
	/**
	*无参构造器
	*/
	public  Tool(){
		System.out.println("能载人或载物");
	}
	/**
	*含int参数的构造器
	*/
	public Tool(int sum){
		System.out.println("能载"+sum+个人");
	}
	/**
	*含String参数的构造器
	*/
	public Tool(String str){
		System.out.println("能载"+str+"货物");
	}
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值