java中的方法重载,如何读取variable.method中的变量进行方法声明? java
Method overloading in java, how to read variable in variable.method for method declaration? java
我想创建一个名为 plus 的方法,将变量 i1 添加到 i2。
但是我不明白我是如何根据下面给定的代码(代码片段 2)调用我的方法加上 variabel i1 的。
我最初的想法是这样做(但不能因为说明):
public class Int{
public static voind main(String[] args){
Int i1 = new Int(5);
Int i2 = new Int(2);
Int sum = plus(i1, i2);
}
public static int plus(int i1, int i2) {
int sum = i1 + i2;
return sum;
}
System.out.prinln("Sum of i1 and i2 is " + sum);
}
我尝试以与上面代码相同的方式创建函数 plus(int i1, int i2) 但随后出现以下错误: Int 类型中的方法 plus(int, int) 不适用于这
参数(整数)
然后我尝试了这个:
public class Int {
public Int(int i) {
// TODO Auto-generated constructor stub
}
public static void main(String[] args) {
Int i1 = new Int(5); //cannot be changed to due assignment instructions
Int i2 = new Int(2); //cannot be changed to due assignment instructions
Int sum = i1.plus(i2); //cannot be changed to due assignment instructions
}
public static int plus(int i2) {
int sum = i1 + i2;
return sum;
}
}
但是在方法plus中得到错误:i1无法解析为变量
期望的输出:i1 和 i2 的总和是 Int(7)
我假设您的 Int
class 有一些成员 i
持有 Int
的各个实例的值。该成员可以在 Int
的任何 class 方法中作为 this.i
访问。
此外,在您的 main
方法中,您使用 i2
作为参数调用 plus
。 i2
是 Int
的实例,但您的方法签名要求 int
(原语)。
最后但并非最不重要的是,您想要访问 Int
的实例信息,也就是说您可能不想创建方法 static
,而是想要一个实例方法。
考虑到以上所有内容,您的方法可能如下所示:
public int plus(Int i2) {
int sum = this.i + i2.i;
return sum;
}
i1 和 i2 是 class Int 的对象,所以你不能这样求和。我建议你在 Int class 中添加一个属性 "value",在构造函数中分配值,然后在你的 plus 方法中求和这个值
要实现 Int sum = i1.plus(i2)
的语法,您需要一个方法:
- 是一个实例(即non-static)方法
- 接受一个
Int
作为参数
- returns一个
Int
具体来说,plus
应该计算 2 Int
和 returns 的总和,一个新的 Int
.
此外,您必须覆盖 Int
的 toString
方法,以便它 returns 打印时包装 int
的字符串表示形式。
说到包装的 int
,您的 Int
class 似乎没有存储传递的 int
的基础 int
字段进入构造函数。您目前只是忽略了传递给构造函数的任何内容,这似乎不是一个好主意。
根据以上内容,Int
应如下所示:
class Int {
private int wrapped;
public Int(int wrapped) {
this.wrapped = wrapped;
}
@Override
public String toString() {
return Integer.toString(wrapped);
}
public Int plus(Int other) {
int sum = this.wrapped + other.wrapped;
return new Int(sum);
}
}
我想创建一个名为 plus 的方法,将变量 i1 添加到 i2。 但是我不明白我是如何根据下面给定的代码(代码片段 2)调用我的方法加上 variabel i1 的。 我最初的想法是这样做(但不能因为说明):
public class Int{
public static voind main(String[] args){
Int i1 = new Int(5);
Int i2 = new Int(2);
Int sum = plus(i1, i2);
}
public static int plus(int i1, int i2) {
int sum = i1 + i2;
return sum;
}
System.out.prinln("Sum of i1 and i2 is " + sum);
}
我尝试以与上面代码相同的方式创建函数 plus(int i1, int i2) 但随后出现以下错误: Int 类型中的方法 plus(int, int) 不适用于这 参数(整数)
然后我尝试了这个:
public class Int {
public Int(int i) {
// TODO Auto-generated constructor stub
}
public static void main(String[] args) {
Int i1 = new Int(5); //cannot be changed to due assignment instructions
Int i2 = new Int(2); //cannot be changed to due assignment instructions
Int sum = i1.plus(i2); //cannot be changed to due assignment instructions
}
public static int plus(int i2) {
int sum = i1 + i2;
return sum;
}
}
但是在方法plus中得到错误:i1无法解析为变量
期望的输出:i1 和 i2 的总和是 Int(7)
我假设您的 Int
class 有一些成员 i
持有 Int
的各个实例的值。该成员可以在 Int
的任何 class 方法中作为 this.i
访问。
此外,在您的 main
方法中,您使用 i2
作为参数调用 plus
。 i2
是 Int
的实例,但您的方法签名要求 int
(原语)。
最后但并非最不重要的是,您想要访问 Int
的实例信息,也就是说您可能不想创建方法 static
,而是想要一个实例方法。
考虑到以上所有内容,您的方法可能如下所示:
public int plus(Int i2) {
int sum = this.i + i2.i;
return sum;
}
i1 和 i2 是 class Int 的对象,所以你不能这样求和。我建议你在 Int class 中添加一个属性 "value",在构造函数中分配值,然后在你的 plus 方法中求和这个值
要实现 Int sum = i1.plus(i2)
的语法,您需要一个方法:
- 是一个实例(即non-static)方法
- 接受一个
Int
作为参数 - returns一个
Int
具体来说,plus
应该计算 2 Int
和 returns 的总和,一个新的 Int
.
此外,您必须覆盖 Int
的 toString
方法,以便它 returns 打印时包装 int
的字符串表示形式。
说到包装的 int
,您的 Int
class 似乎没有存储传递的 int
的基础 int
字段进入构造函数。您目前只是忽略了传递给构造函数的任何内容,这似乎不是一个好主意。
根据以上内容,Int
应如下所示:
class Int {
private int wrapped;
public Int(int wrapped) {
this.wrapped = wrapped;
}
@Override
public String toString() {
return Integer.toString(wrapped);
}
public Int plus(Int other) {
int sum = this.wrapped + other.wrapped;
return new Int(sum);
}
}