我的老师给了我这个任务,我让整个程序运行得很完美,但是我不理解第4步中他希望我重载set方法来设置声明值的部分。在程序中,我问的是错误的问题,并使用Cat类中的set方法来设置布尔值。为什么我需要一个重载方法呢?如果有人可以提供一些关于这个主题的想法,那就太棒了。谢谢!
1.Create a new class called Cat that includes the functionality below
2.The new class has the attributes of:
name – type String
age – type integer
weight – type double
breed - type String
declawed - type boolean - true for has no claws, false for has claws
3. Be sure your classes have a reasonable complement of constructor, accessor and
mutator methods. Every member variable must have at least one independent accessor and
one independent mutator.
4. Example:
public void setName(String name) mutator used to set name
public void setBreed(String breed) mutator used to set the breed
public void set(Boolean declawed) used to set claws or not
***(You must overload the set method to set deClawed value)****
public String getName() accessor used to get name
public String getBreed() accessor used to get breed
public boolean getBoolean() access used to get the value of declawed
这是正确的输出。
示例运行: 输入Cat 1:Sam
的名称输入Cat 1:1的年龄
输入Cat 1:5的重量
输入Cat 1品种:fluffy1
猫有爪子吗?对还是错?:正确
答案 0 :(得分:0)
你是对的,这毫无意义。
在Java中,overloading方法意味着使用相同的名称多次定义它,但使用不同的方法签名。
重载set()
方法的示例如下所示:
public void set(int age) {
this.age = age;
}
public void set(Boolean declawed) {
this.declawed = declawed;
}
您似乎没有任何此类要求,在任何情况下,重载mutator方法都没有意义,因为Java有一个命名约定,您可以调用方法setFoo()
和{{1}设置名为setBar()
和foo
的变量的值。
也许你的教授意味着你必须实施 set方法?
在任何情况下,即使您的计划正常运作,也值得花时间与老师交谈,要求他们澄清计划要求。
答案 1 :(得分:0)
我想这只是为了练习。
但技术上是boolean!= Boolean
没有太大的区别,但是包装类型接受空值,因此布尔值很方便。如果您正在使用set方法从数据库读取数据,该列允许空值。
原始布尔值使用较少的内存。
试试这段代码:
public class Cat {
boolean declawed;
public void set(boolean declawed){
System.out.println("boolean called");
this.declawed=declawed;
}
public void set(Boolean declawed){
System.out.println("Boolean called");
// if(declawed==null){declawed=false;}
this.declawed=declawed;
}
public static void main(String[] args) {
Cat c=new Cat();
c.set(Boolean.TRUE);
c.set(true);
c.set(null);
}
}