请大家给点思路
以下是一个不可改变类的测试程序,构建3个类一个命名为” MutableClass”为可改变类,一个是“ImmutableClass“为不可改变类,另一个为“TestClass”使程序的打印结果和注释的一样。(提示TestClass为抽象父类或者是接口)
public class ImmutableClassTester { public static void main(String args[]) {
MutableClass mc = new MutableClass(1);
ImmutableClass iMc = new ImmutableClass(1);
int a = add(mc);
int b = add (iMc);
System.out.println(a);//打印2
System.out.println(b); //打印2
System.out.println(mc.getValue());//打印2
System.out.println(iMc.getValue());//打印1
} static int add (TestClass tc) {
return tc.plus(1).getValue();
}
}
尤其是静态类里的return tc.plus(1).getValue();这个我不知道怎么实现.
TestClass我建的是接口
以下是一个不可改变类的测试程序,构建3个类一个命名为” MutableClass”为可改变类,一个是“ImmutableClass“为不可改变类,另一个为“TestClass”使程序的打印结果和注释的一样。(提示TestClass为抽象父类或者是接口)
public class ImmutableClassTester { public static void main(String args[]) {
MutableClass mc = new MutableClass(1);
ImmutableClass iMc = new ImmutableClass(1);
int a = add(mc);
int b = add (iMc);
System.out.println(a);//打印2
System.out.println(b); //打印2
System.out.println(mc.getValue());//打印2
System.out.println(iMc.getValue());//打印1
} static int add (TestClass tc) {
return tc.plus(1).getValue();
}
}
尤其是静态类里的return tc.plus(1).getValue();这个我不知道怎么实现.
TestClass我建的是接口
MutableClass implements TestClass
final ImmutableClass extends MutableClass 然后ImmutableClass 重写getValue方法不就行了么?
this.aInt = aInt;
return this ;
}
mc和iMc均为子类引用,那么在执行的时候直接执行子类的方法.把LZ的代码分成单个执行的顺序如下:mc.plus();
mc.getValue();
iMc.plus();
iMc.getValue();mc.getValue();
iMc.getValue();只看mc执行的记录:LZ的要求就是,当mc连续两次执行getValue()方法的时候,却得到不同的结果.这个不太可能,因为引用为子类引用,执行的方法是一样的.所以返回的结果也是一样的. -->不可能
int getValue(); TestClass plus(int i);
}class MutableClass implements TestClass {
int value; MutableClass(int i) {
value = i;
} public int getValue() {
return value;
} public TestClass plus(int i) {
value += i;
return new MutableClass(value);
}
}class ImmutableClass implements TestClass {
int value; ImmutableClass(int i) {
value = i;
}
public int getValue() {
return value;
} public TestClass plus(int i) {
return new ImmutableClass(value + i);
}
}
这样么?
是this
知道么
是this