考虑以下Java代码中的只读接口模式代码:
package package2;
public interface AccountsReadOnly {
public String getValue();
}
package package1;
import package2.AccountsReadOnly;
class Accounts implements AccountsReadOnly {
private String name;
public Accounts() {
name = "unknown";
}
public String getValue() {
return name;
}
public void setValue(String name) {
this.name = name;
}
}
package package1;
public class Manager {
Accounts allAccess;
public Manager() {}
}
package package2;
public class Employee {
public AccountsReadOnly accountReadOnly;
public Employee() {}
}
public class Demo {
public static void main(String[] args) {
Manager m = new Manager();
Employee e = new Employee();
Accounts a = new Accounts();
m.allAccess = a;
m.allAccess.setValue("Andrew");
System.out.println(m.allAccess.getValue());
e.accountReadOnly = a;
System.out.println(e.accountReadOnly.getValue());
}
}
我无法理解这一行,因为这是我第一次看到这种格式:
m.allAccess.setValue("Andrew");
是否可以使用而不是这条线,因为它们具有相同的参考?
m.setValue("Andrew");
是 m.allAccess
对象的引用?
1 回答
不,
m.setValue("Andrew");
不起作用,因为Manager
-class没有函数setValue
是的,
allAccess
引用此行中设置的Account
-object:m.allAccess = a;
getValue
和setValue
方法应该真正命名为getName
和setName
,因为它们的作用就是这样 .setValue
应返回一个值,例如帐户的余额 .如果你有一个setter,
name
也不是只读的 .