8-2-1 构造方法与方法重载

第1关:选择题
任务描述
本关任务:选择题。

相关知识
为了完成本关任务,你需要掌握:1.构造方法,2.方法重载。

构造方法
方法名与类名相同,且没有返回值类型;
当类中没有定义构造方法时,创建对象时会调用默认的构造方法;
当类中重新编写了构造方法时,默认的构造方法会被覆盖掉;
一个类中可以有多个构造方法,但参数的类型或个数必须有不同,即重载的构造方法。
详情参见 资源中的课件。

方法重载
一个方法名,有多个不同的实现版本,即多个同名的方法。
前提是这些方法的参数必须不同(个数不同或类型不同)。

详情参见 资源中的课件。

开始你的任务吧,祝你成功!

1
2
3
4 and  5
第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();
	}
}
  • 14
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值