【头歌】Java 面向对象 - 类与对象 第4关类与对象练习

部署运行你感兴趣的模型镜像

第4关:类与对象练习

  • 学习内容
  • 参考答案
  • 记录
任务描述

本关任务:为“无名的粉”写一个类,编写该类的构造方法和成员变量。

相关知识
包的概念

在之前我们定义类和定义方法都是在一个文件中编写的,但是在实际开发过程中我们肯定不能使用一个文件去编写所有的代码。 怎么解决这个问题呢?

Duang,,登场了,包就像我们windows系统中的文件夹一样,只不过包是专门存放代码文件的。

包的主要作用就是给代码文件分类。

如果一个类被定义在某一个包下那么在定义类的时候需要声明包名,否则程序会报错。

如:

编程要求

我已经帮你创建好了两个文件一个是WuMingFen.java,另一个是Test.java,你需要切换文件在两个文件中编写代码来完成本关任务。

为“无名的粉”写一个类:class WuMingFen 要求:

  • 有三个属性:面码:String theMa 粉的分量(两):int quantity 是否带汤:boolean likeSoup

  • 写一个构造方法,以便于简化初始化过程,如: WuMingFen f1 = new WuMingFen("牛肉",3,true);

  • 重载构造方法,使得初始化过程可以多样化: WuMingFen f2 = new WuMingFen("牛肉",2);

  • 如何使得下列语句构造出来的粉对象是酸辣面码、2两、带汤的? WuMingFen f3 = new WuMingFen();

  • 写一个普通方法:check(),用于查看粉是否符合要求。即:将对象的三个属性打印在控制台上。

测试说明

我会对你编写的代码进行测试:

测试输入: 牛肉3true 预期输出: 面码:牛肉,粉的份量:3两,是否带汤:true 面码:牛肉,粉的份量:3两,是否带汤:false 面码:酸辣,粉的份量:2两,是否带汤:true

测试输入: 三鲜1true 预期输出: 面码:三鲜,粉的份量:1两,是否带汤:true 面码:三鲜,粉的份量:1两,是否带汤:false 面码:酸辣,粉的份量:2两,是否带汤:true

鼠标悬停即可切换文件:

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


易错点解析:

1、普通方法的调用容易与c语言中函数的用法混淆。比如一开始我写Test,java中check的时候就没有用f1.check();而是习惯性的写成了check(f1);,这样是不行的。

2、this关键字的使用。在WuMingFen.java中需要通过使用this关键字来修改对象的成员变量。如this.theMa访问的是WuMingFen对象自身的theMa,而方法参数中的theMa则表示方法传入的值。

代码参考:

Test.java:

package step4;

import java.util.Scanner;

public class Test {
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String theMa = sc.next();
		int quantity = sc.nextInt();
		boolean likeSoup = sc.nextBoolean();
		/********** Begin **********/
		//使用三个参数的构造方法创建WuMingFen对象  取名 f1
        WuMingFen f1=new WuMingFen(theMa,quantity,likeSoup);

		//使用两个参数的构造方法创建WuMingFen对象  取名 f2
        WuMingFen f2=new WuMingFen(theMa,quantity);

		//使用无参构造方法创建WuMingFen对象  取名 f3
        WuMingFen f3=new WuMingFen();

		//分别调用三个类的 check方法
        f1.check();
        f2.check();
        f3.check();

		
		/********** End **********/	
	}
}

WuMingFen.java

/********** Begin **********/
//在这里添加包名  step4
package step4;
//创建类 添加属性和方法
class WuMingFen{
    String theMa;
    int quantity;
    boolean likeSoup;

    public WuMingFen(String theMa,int quantity,boolean likeSoup){
        this.theMa = theMa;
        this.quantity = quantity;
        this.likeSoup = likeSoup;
    }
    public WuMingFen(String theMa,int quantity){
        this.theMa = theMa;
        this.quantity = quantity;
        
    }
    public WuMingFen(){
        theMa = "酸辣";
        quantity = 2;
        likeSoup = true;
    }
    public void check(){
        System.out.println("面码:"+this.theMa+",粉的份量:"+this.quantity+"两,是否带汤:"+this.likeSoup);
    }
    
}




/********** End **********/	

附带两道老师布置的练习题:


  • 1、

    下列关于构造方法的说法不正确的是()

    A、Java语言规定构造方法名必须与类名相同
    B、Java语言规定构造方法没有返回值,且不用void关键字声明
    C、构造方法不可以重载
    D、构造方法只能用new关键字来创建
  • 2、

    类Test定义如下:

    public class Test{
    public float method1(){
    System.out.println("方法1");
    return 1.5;
    }
    
    
    }

      将下列哪些方法插入到第7行是合法的()

      A、
      public float method1(){
      System.out.println("方法2"); return 1.1; }

      B、
      public Test1(){ System.out.println("hello"); }

      C、
      public float method1( int a){ System.out.println("方法2"); return a+0.5; }

      D、
      public Test(){ System.out.println("hello"); }

    1. 第2题解析:

    2. 选项A:与现有method1方法具有相同的方法名和参数列表,重复方法定义,会导致编译错误。

    3. 选项B:类名为Test,而构造函数名必须与类名完全一致。这里使用Test1会被视为一个无效的方法声明,会导致编译错误。

    4. 选项C:与现有method1方法同名但不同参,为方法重载。

    5. 选项D:这是类Test的构造函数定义。即使类中已有默认构造函数,显式定义构造函数是合法的,不会导致冲突。

    您可能感兴趣的与本文相关的镜像

    ACE-Step

    ACE-Step

    音乐合成
    ACE-Step

    ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值