button.setTransform(true);
我们可以用两个变量执行类似的功能吗?
答案 0 :(得分:4)
在其中创建类的引用变量是否正确? 同班同学?
是的,这是正确的
您将通过示例了解更多信息,请考虑您有一个班级人员:
class Person {
String name;
int age;
Person mother;
Person father;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public Person(String name, int age, Person mother, Person father) {
this.name = name;
this.age = age;
this.mother = mother;
this.father = father;
}
}
每个人都是有父母的人,母亲和父亲是人。
例如你:
Person p1 = new Person("Son Name", 22,
new Person("Mother name"), 45), new Person("Father name"), 50));
或者您可以像这样创建它:
Person mother = new Person("Mother name", 45);
Person father = new Person("Father name", 50);
Person son = new Person("Son name", 22, mother, father);
就像你看到的那样,你可以像你想要的那样玩你的构造函数。
答案 1 :(得分:0)
如果使用new Test()
初始化每个成员,则最终会得到无限递归。所以不,那是不可能的。
递归必须在某处停止,例如使用空值。
除此之外,使用与类本身相同类型的实例变量没有任何问题。这是一个完全正常的变量。
答案 2 :(得分:0)
如果您尝试执行以下操作,则只会出现无限循环(堆栈溢出错误):
Class Test {
Test variable2 = new Test();
}
答案 3 :(得分:0)
您的变量都是实例变量,这意味着如果您创建它,它们属于Test
的实例。但是,variable2
总是会导致堆栈溢出错误。假设您执行new Test()
:
测试t1 =新测试(); - > t1.variable1初始化为null,t1.variable2初始化为new Test(); - > t1.variable2.variable2初始化为新的Test(); ...
它无休止地递归。因此,直接初始化实例变量不是一种选择。您必须通过setter或构造函数对其进行初始化。这完全有效。允许类具有自己类型的实例成员。毕竟,有一些用于面向对象的用例,其中某些东西可以包含一个或多个自身实例。树结构将是一个典型示例:每个节点可以包含许多子节点,这些子节点又可以包含更多子节点。
请注意,如果您将这些设置为静态,则可以立即初始化实例:
Class Test {
static Test variable1 = null;
static Test variable2 = new Test();
}
这些将是静态成员,属于测试类,而不是特定的测试实例。