第1关:选择题
任务描述
本关任务:选择题。
相关知识
为了完成本关任务,你需要掌握:1.构造方法,2.方法重载。
构造方法
方法名与类名相同,且没有返回值类型;
当类中没有定义构造方法时,创建对象时会调用默认的构造方法;
当类中重新编写了构造方法时,默认的构造方法会被覆盖掉;
一个类中可以有多个构造方法,但参数的类型或个数必须有不同,即重载的构造方法。
详情参见 资源中的课件。
方法重载
一个方法名,有多个不同的实现版本,即多个同名的方法。
前提是这些方法的参数必须不同(个数不同或类型不同)。
详情参见 资源中的课件。
开始你的任务吧,祝你成功!
第2关:时钟类-1(用默认的构造方法)
任务描述
本关任务: 定义一个时钟类MyClock,包含3个数据成员(即成员变量:时,分,秒);包含2个方法, 一个设置时间的方法setClock(),一个显示时间的方法display(),按照“ 12:28:45 ”的格式显示时间。
相关知识
为了完成本关任务,你需要掌握:1.构造方法。
方法名与类名相同,且没有返回值类型。
当类中没有编写构造方法时,创建对象时自动调用默认的构造方法。
比如:
public class Student {
//数据成员
String number;
String name;
int age;
//设置学生信息
public void set(String number, String name,int age)
{
this.number=new String( number);
this.name=new String( name);
this.age= age;
}
//显示学生信息
public void display()
{
System.out.printf(“number:%s,name:%s,age:%d\n”,number,name,age);
}
}
//设调用语句如下
Student stu1=new Student();
stu1.set( “180805223”,“wang wei”,19);
stu1.display();
则创建stu1时调用的是默认的构造方法,此时将stu1的各个成员分别初始化为:null null 0
即:当数据成员是对象时,初始值为null; 当数据成员是数值类型(整型、实型)变量时,初始值为0.
编程要求
根据提示,在右侧编辑器补充代码 。
测试说明
平台会对你编写的代码进行测试:
测试输入:12 28 45 ;
预期输出:
输入一个时间:(时 分 秒用空格分隔)
12:28:45
0: 0: 0
开始你的任务吧,祝你成功!
/*(1) 定义一个时钟类MyClock,包含3个数据成员(即成员变量:时,分,秒);
包含2个方法, 一个设置时间的方法setClock(),一个显示时间的方法display(),按照“ 12:28:45 ”的格式显示时间。
请在下面的【】处补充代码。
*/
public class MyClock {
//数据成员:hour minute second
int hour,minute,second;
//方法成员:设置时间
public void setClock(int hour,int minute,int second)
{
this.hour=hour;
this.minute=minute;
this.second=second;
}
//方法成员: 显示时间
public void display()
{
System.out.printf("%2d:%2d:%2d\n", hour,minute,second);
}
}
//主程序类,定义两个时钟对象,输入一个时间值,初始化时钟对象1,然后输出两个时钟的值。
import java.util.Scanner;
public class MyClockTest {
public static void main(String[] args) {
MyClock clock1,clock2;
clock1=new MyClock();
clock2=new MyClock();
//输入一个时间:时 分 秒
Scanner sc = new Scanner(System.in);
int hour,minute,second;
System.out.println("输入一个时间:(时 分 秒用空格分隔)");
hour=sc.nextInt();
minute=sc.nextInt();
second=sc.nextInt();
//用输入的时间设置时间对象clock1
clock1.setClock(hour,minute,second);
//显示两个时间对象
clock1.display();
clock2.display();
}
}
第3关:时钟类2–自定义重载的构造方法
任务描述
本关任务:(1)定义一个时钟类MyClock,包含3个数据成员(即成员变量:时,分,秒);包含2个方法, 一个设置时间的方法setClock(),一个显示时间的方法display(),按照“ 12:28:45 ”的格式显示时间。
(2) 在(1)的基础上,添加一个不带参数的构造方法,给数据成员置0;一个带参数的构造方法,通过三个参数(时 分 秒)给时钟初始化;
在主程序类中定义两个时钟对象,输入一个时间,初始化时钟对象2,然后输出两个时钟的值。
相关知识
为了完成本关任务,你需要掌握:1.构造方法的定义和调用
特别提示:当类中编写构造函数后,默认的构造方法被覆盖掉。因此,若想实现给对象初始化为0或null,则必须编写不带参数的构造方法;若想给对象初始化为指定的值,则必须编写带参数的构造方法。
不带参数的构造方法
定义带参数的构造方法,实现对象的初始化
public class Student {
//数据成员
String number;
String name;
int age;
//构造方法
Student( )
{
this.number = “” ;
this.name = “”;
this.age = 0;
}
……
}
带参数的构造方法
定义带参数的构造方法,实现对象的初始化
public class Student {
//数据成员
String number;
String name;
int age;
//构造方法
Student(String number, String name,int age)
{
this.number=new String( number);
this.name=new String( name);
this.age = age;
}
……
}
构造方法的调用
//调用不带参数的构造方法
Student stu1 = new Student();
//调用带参数的构造方法
Student stu2 = new Student(“180805223”,“wang wei”,19);
编程要求
根据提示,在右侧编辑器补充代码,计算并输出数组的平均值和最大值。
测试说明
平台会对你编写的代码进行测试:
测试输入:10 20 30;
预期输出:
输入一个时间:(时 分 秒用空格分隔)
0: 0: 0
10:20:30
开始你的任务吧,祝你成功!
/* 在上一关的基础上,添加一个不带参数的构造方法,给数据成员置0;一个带参数的构造方法;
在主程序类中定义两个时钟对象,输入一个时间,初始化时钟对象2,然后输出两个时钟的值。
*/
public class MyClock {
//数据成员: 时 分 秒
int hour,minute,second;
//方法成员:构造方法1--不带参数的,初始化时钟为 0:0:0
MyClock(){
hour=0;
minute=0;
second=0;
}
//方法成员:构造方法2-- 带参数的,三个参数分别( 时,分,秒)
MyClock(int hour,int minute,int second){
this.hour=hour;
this.minute=minute;
this.second=second;
}
//方法成员:设置时间
public void setClock(int hour,int minute,int second)
{
this.hour=hour;
this.minute=minute;
this.second=second;
}
//方法成员: 显示时间
public void display()
{
System.out.printf("%2d:%2d:%2d\n", hour,minute,second);
}
}
/*
在主程序类中定义两个时钟对象,时钟对象1初始化为(0:0:0);输入一个时间,初始化时钟对象2,然后输出两个时钟的值。
*/
import java.util.Scanner;
public class MyClockTest {
public static void main(String[] args) {
MyClock clock1,clock2;
clock1 = new MyClock();
//输入一个时间:时 分 秒
Scanner sc = new Scanner(System.in);
int hour,minute,second;
System.out.println("输入一个时间:(时 分 秒用空格分隔)");
hour=sc.nextInt();
minute=sc.nextInt();
second=sc.nextInt();
//用输入的时间初始化时间对象clock2
clock2 = new MyClock(hour,minute,second);
//显示两个时间对象
clock1.display();
clock2.display();
//用输入的时间设置clock1并显示
clock1.setClock(hour,minute,second);
clock1.display();
}
}
第4关:时钟类3–用对象作为构造方法的参数
任务描述
本关任务: (1) 定义一个时钟类MyClock,包含3个数据成员(即成员变量:时,分,秒);包含2个方法, 一个设置时间的方法setClock(),一个显示时间的方法display(),按照“ 12:28:45 ”的格式显示时间。
(2)添加一个用时钟对象作为参数的构造方法。
(3)在主程序类中定义两个时钟对象,输入一个时间,初始化时钟对象1,用clock1 作为参数初始化clock2,然后输出两个时钟的值。
相关知识
为了完成本关任务,你需要掌握:1. 对象作为构造方法的参数。
拷贝构造方法
构造方法,参数是同类型的一个对象。
比如,
Student(Student stu)
{
this.number = new String(stu.number);
this.name = new String(stu.name);
this.age = stu.age;
}
特别提示:
当数据成员(也成为成员变量)是类的对象时(比如number和 name是类String类型的对象),是引用类型,因此不能直接用赋值语句: this.number = stu.number;
否则,当创建多个对象后,所有对象的number都引用的是同一个字符串;没有实现每个对象都有自己的数据成员的实际需要。
编程要求
根据提示,在右侧编辑器补充代码 。
测试说明
平台会对你编写的代码进行测试:
测试输入:8 30 12;
预期输出:
输入一个时间:(时 分 秒用空格分隔)
8:30:12
8:30:12
/*(1)定义一个时钟类MyClock,包含3个数据成员(即成员变量:时,分,秒);包含2个方法,一个显示时间的方法display(),按照“ 12:28:45 ”的格式显示时间。
(2)在前面两关的基础上,添加一个用时钟对象作为参数的构造方法。
*/
public class MyClock {
//数据成员
private int hour;
private int minute;
private int second;
//方法成员:构造方法1--不带参数的
MyClock()
{
hour = 0;
minute = 0;
second = 0;
}
//方法成员:构造方法2-- 带参数的
MyClock(int hour,int minute,int second)
{
this.hour = hour;
this.minute = minute;
this.second = second;
}
//方法成员:构造方法3-- 用对象作为参数
MyClock(MyClock clock)
{
this.hour = clock.hour;
this.minute = clock.minute;
this.second = clock.second;
}
//方法成员: 显示时间
public void display()
{
System.out.printf("%2d:%2d:%2d\n", hour,minute,second);
}
}
/*在主程序类中输入一个时间,初始化clock1;然后用clock1 作为参数初始化clock2,然后输出两个时钟的值。
请在下面的【】处补充代码。
*/
import java.util.Scanner;
public class MyClockTest {
public static void main(String[] args) {
MyClock clock1,clock2;
//输入一个时间:时 分 秒
Scanner sc = new Scanner(System.in);
int hour,minute,second;
System.out.println("输入一个时间:(时 分 秒用空格分隔)");
hour = sc.nextInt();
minute = sc.nextInt();
second = sc.nextInt();
//用输入的时间初始化时间对象clock1
clock1 = new MyClock(hour,minute,second);
//用clock1初始化clock2
clock2=new MyClock(clock1);
//显示两个时间对象
clock1.display();
clock2.display();
}
}