Java入门第52课——给Cell类添加重载的构造方法

问题

        给Cell类添加重载的构造方法,详细要求如下:

        1.为Cell类定义默认构造方法,使用该构造方法创建对象,并打印显示。

        2.继续为Cell类定义构造方法,要求该构造方法接收一个Cell类型的参数。使用该构造方法,创建一个位置为(0,4)的格子,并打印显示。

方案

        可以对一个类定义多个构造方法,这些构造方法都有相同的名称(类名),但是参数不同,称之为构造方法的重载。在创建对象时,Java编译器会根据不同的参数调用不同的构造方法。

        我们已经为Cell类定义了带有两个参数的构造方法,这样,就可以使用如下代码创建Cell对象:

Cell cell2=new Cell(0,4); //row为0,col为4

        但是,此时,就不能再用如下的方式创建Cell对象了:

Cell cell2=new Cell();

        这是因为,当我们为类定义了构造方法后,Java编译器将不再为该类添加默认的构造方法。如果依然希望能够使用默认的方式来创建对象,则需要为类重新定义默认的构造方法,代码如下所示:

public Cell(){
}

        在默认构造方法中,依然需要为成员变量col和row赋值,则可以使用如下代码:

public Cell(){
        this(0,0);
}

        我们可以继续为Cell类定义带有其他类型参数的构造方法,代码如下所示:

public Cell(Cell cell){
        this(cell.row,cell.col);
}

        然后,可以使用如下的方式创建Cell对象:

Cell cell1=new Cell(0,4);
Cell cell2=new Cell(cell1);

        当我们为类定义了多个构造方法后,在实际使用时,可以根据实际情况选择合适的构造方法。

步骤

        实现此案例需要按照如下步骤进行。

步骤一:为Cell类添加默认构造方法

        在Cell类中,定义默认构造方法。代码如下所示:

public class Cell{
        int row;
        int col;
        
        /**
         *使用this关键字重构
         *@param row:行
         *@param col:列
         */
         public Cell(int row,int col){
             this.row=row;
             this.col=col;
         }
         /**
          *默认构造方法
          */
          public Cell(){
              this(0,0);
          }
}

步骤二:测试默认构造方法

        修改CellGame类的main方法,使用默认构造方法创建Cell对象,并进行打印测试,代码如下所示:

public static void main(String[] args){
        System.out.println("---------绘制Cell----------");
        
        //创建Cell对象,并打印
        Cell cell2=new Cell();
        printCell(cell2);
}

步骤三:再为Cell类添加一个构造方法

        在Cell类中,定义接收Cell类型参数的构造方法。代码如下所示:

public class Cell{
        int row;
        int col;
        
        /**
         *使用this关键字重构
         *@param row:行
         *@param col:列
         */
         public Cell(int row,int col){
             this.row=row;
             this.col=col;
         }
         
         /**
          *默认构造方法
          */
          public Cell(){
              this(0,0);
          }
          
          /**
           *构造方法的重载
           *@param cell
           */
           public Cell(Cell cell){
               this(cell.row,cell.col);
           }
}

步骤四:测试Cell类型参数的构造方法

        修改CellGame类的main方法,使用新添加的构造方法创建Cell对象,并进行打印测试,代码如下所示:

public static void main(String[] args){
        System.out.println("-----------绘制Cell-------------");
        //创建Cell对象,并打印
        //Cell cell2=new Cell();
        //printCell(cell2);
        
        //创建Cell对象,并打印
        Cell cell1=new Cell(0,4);
        Cell cell2=new Cell(cell1);
        printCell(cell2);
}

博主点评:

     构造方法也是方法,故可以重载。

     编译器会默认添加无参构造方法,若自己写了构造方法,则会覆盖,面试题经常考。

扫码关注我吧:

版权声明:本文为houjunkang363原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/houjunkang363/article/details/90477534

智能推荐

Java入门第82课——StringBuilder的append方法

问题         StringBuilder类提供将各种数据类型变量的字符串形式追加到当前序列中的append方法,在Java API中提供的append重载方法如图-15所示:         本案例要求将字符串"java&...

Java入门第92课——包装类

1.1 包装类概述 1.1.1 包装类概述     · 在进行类型转换的范畴内,有一种特殊的转换,需要将int这样的基本数据类型转换为对象;     · 所有基本类型都有一个与之对应的类,即包装类(wrapper)。      包装...

Java入门第12天 (方法重载 ,方法的参数传递)

需求:使用方法重载的思想,设计比较两个整数是否相同的方法,兼容全整类型(byte ,short ,int ,long) 7:方法的参数传递 (1):对于引用类型的参数,形式参数的改变,影响实际参数的值。 * 案例:需求:输入星期数,显示今天的减肥活动 周一:跑步 周二:游泳 周三:动感单车 周四:拳击 周五:爬山 周六:慢跑 周日:休息 思路: 1:键盘录入一个星期数,用一个变量接收 2:对星期数...

Java入门第64课——抽象类和接口

很多同学不知道抽象类和接口究竟有什么作用。认真学完本节课,再做点练习(课后的案例和作业),即可了解抽象类和接口的美妙之处。 概要:             1.1 使用抽象类             1.1.1 抽象方法和抽象类       &nbs...

Java入门第43课——对象和类

1.1 面向对象程序设计 1.1.1 面向过程的结构化程序设计                  1.1.2 什么是抽象数据类型     · 所谓抽象数据类型可以理解为:将不同...

猜你喜欢

Java的方法重载与构造方法及其重载

前言 在讲Java的方法重载前,先说明一下什么是方法的签名! 方法的签名:方法名和参数列表  即 方法的签名=方法名+参数列表 一个类中,不可以有两个方法的签名 完全相同 ,即一个类中不可以有两个方法的方法名和参数列表都完全一样。 如果一个类的两个方法只是方法名相同 而 参数列表不同,是可以的。 ex: 说明:方法的签名 是否相同,与返回值类型无关,与变量名也无关,只考虑变量类...

Java入门第54课——方法和数组作业

1.请描述下列代码的运行结果 2.关于构造方法,下面说法正确的是         A.构造方法不能带有参数         B.构造方法的名称必须和类名相同        ...

Java入门第59课——方法重写规则

问题         在TetrominoT和TetrominoJ类中重写父类Tetromino的print方法,并进行测试,控制台输出结果如下所示: 方案         首先,在TetrominoT类中,重写print方法。方法的重写要...

Java入门第93课——Number的intValue和doubleValue方法

问题     在Java中,抽象类Number是BigDecimal、BigInteger、Byte、Double、Float、Integer、Long和Short类的超类。该类提供了六个方法,如图-1所示。 byte byteValue()   以byte形式返回指定的数值。 abstract double doubleValue()  ...

java方法(调用、重载),数组(创建,多维),对象、类的封装、构造方法

今天记点纯知识 (由于学了c++,方法之类的就不写了) 方法 定义一个方法 修饰符:访问类型 returnValueType :方法返回值的数 据类型 方法调用: 当方法返回一个值, 如果方法返回值是void,方法调用一定是一条语句 方法重载 最基础的:2个方法—有相同名字但参数不同 就是说一个类的两个方法拥有相同的名字,但是有不同的参数列表 Java编译器根据方法签名判断哪个方法应该...