一、任务要求
- 完成一个Java application应用程序,描述一个人类。要求如下:
- 要求此人类必须包含有人的姓名、性别、出生日期等基本属性(变量)。
- 要求此人类描述吃饭的方法(函数)和描述睡觉的方法(函数)。例如睡觉方法的执行体为一个 System.out.println() 函数,此函数输出一段例如“ xx(姓名)往床上躺倒,不久就睡着了……”之类的描述睡觉的文本。
- 要求此人类的构造函数要具有无参数的构造函数,以及带有姓名、性别、出生日期等参数的构造函数,并在构造函数中输出一段描述xx(姓名)出生的文本。
- 实例化出张三和李四两个人类对象(变量),并为之赋初值。
- 调用张三、李四等人类对象的各种属性(类成员变量)和方法(函数)。
- 在上述人类的基础上派生一个继承自人类的新的学生类,加入学号等学生特有的属性,加入上课、考试等方法,并实例化一个或几个学生类对象,完成这些学生类对象的各种属性和方法的调用。
二、任务的理解
此次的任务主要是针对Java中的类和方法的理解与使用,通过学习了解Java的类与对象知道Java是面向对象进行编程的,在类中可以定义类的属性和类的方法,然后在main函数中进行赋值,调用。还可以通过继承类的方式定义一个新的类使之可以调用父类的属性和方法,并且可以在新的类中定义它特有的属性和方法。
三、完成方法
采用sublime编程软件进行编译,并生成类程序文件,在Windows命令窗口运行,观察运行结果并分析。
四、完成过程与结果
代码内容:
public class task1_2{ //定义一个类String name; //定义字符串变量nameString gender; //定义字符串变量genderString date; //定义字符串变量dateString place; //定义字符串变量placeint high; //定义整型变量highint weight; //定义整型变量weightpublic void eat(String name){ //定义一个方法eatSystem.out.println(name+"吃饭的时候经常用筷子"); //输出eat的方式} public void sleep(String name){ //定义一个方法sleepSystem.out.println(name+"往床上一躺就睡着了"); //输出sleep的方式}public task1_2(){ //无参的构造函数}public task1_2(String name,String gender,String date,String place,int high,int weight){//有参的构造函数//在构造函数中输出一段信息文本System.out.println("姓名:"+name+",性别:"+gender+",于"+date+"出生于"+place+",身高:"+high+"cm,体重:"+weight+"kg"); }public static void main(String[] args){ //main主方法//创建task1_2的对象p1,并给有参构造函数赋值task1_2 p1=new task1_2("胡歌","男","1982年9月20日","上海",185,70);p1.eat("胡歌"); //对象p1调用eat方法,并给方法中的参数name赋值p1.sleep("胡歌"); //对象p1调用sleep方法,并给方法中的参数name赋值task1_2 p2=new task1_2(); //创建task1_2类的对象p2p2.name="马云"; //给对象p2的变量name赋值p2.gender="男"; //给对象p2的变量gender赋值p2.date="1964年9月10日"; //给对象p2的变量date赋值p2.place="浙江"; //给对象p2的变量place赋值p2.high=166; //给对象p2的变量high赋值p2.weight=56; //给对象p2的变量weight赋值//输出p2这个对象的信息System.out.println("姓名:"+p2.name+",性别:"+p2.gender+",于"+p2.date+"出生于"+p2.place+",身高:"+p2.high+"cm,体重:"+p2.weight+"kg");p2.eat("马云"); //p2调用eat方法并赋值p2.sleep("马云"); //p2调用sleep方法并赋值Student s1=new Student(); //实例化Student类的一个对象s1s1.name="小明"; //给对象s1的变量name赋值s1.gender="男"; //给对象s1的变量gender赋值s1.date="1997年1月11日"; //给对象s1的变量date赋值s1.place="云南"; //给对象s1的变量place赋值s1.high=175; //给对象s1的变量high赋值s1.weight=60; //给对象s1的变量weight赋值s1.studentID="20202204000"; //给对象s1的变量studentID赋值s1.classes="20通信班"; //给对象s1的变量classes赋值//输出学生信息System.out.println("姓名:"+s1.name+",性别:"+s1.gender+",学号为"+s1.studentID+"在"+s1.classes+"学习"+",于"+s1.date+"出生于"+s1.place+",身高:"+s1.high+"cm,体重:"+s1.weight+"kg");s1.goToClass(); //调用子类Student类中的方法goToClasss1.goToExam(); //调用子类Student类中的方法goToExams1.eat("小明"); //调用父类中的方法eats1.sleep("小明"); //调用父类中的方法sleep}
}
class Student extends task1_2{ //创建子类Student继承于task1_2String studentID; //定义子类字符串变量studentIDString classes; //定义子类字符串变量classespublic void goToClass(){ //创建方法goToClassSystem.out.println("学生的职责就是要上课"); //输出文字} public void goToExam(){ //创建方法goToExamSystem.out.println("每一位学生都要参加考试,并且要考试合格");//输出文字}
}
运行结果:
五、结果分析与总结
程序运行首先进入main函数,第一个人采用实例化对象时给有参构造函数传递参数的值,然后带参数的构造函数输出人物信息。调用方法时要注意如果方法有参数则必须赋值或者传递一个参数。
第二个人实例化对象时没有传递任何参数,所以调用的是无参的构造函数,采用对边成员变量进行赋值的方式,然后输出人物信息。再调用方法。
定义一个学生类继承于上一个类,并在学生类中定义特有的变量属性以及方法,在main函数中对学生类实例化一个对象,并对这个学生的所有属性进行赋值,然后输出学生信息,调用父类和学生类中的所有方法。
这里采用的方法都是无返回值的方法,所以在方法体内输出一段文字代表对此方法调用成功。
需要注意的是方法调用时,参数的数量与类型必须与之相匹配。