我遇到这种情况:
public class Number {
int num;
private TakeNumber take = null;
public Number() {
num = 5;
}
public void print() {
take.doSomething();
}
public int getNumber() {
return num;
}
public static void main(String[] args) {
new Number();
}
}
public class TakeNumber {
private Number number = new Number();
public void doSomething() {
System.out.println(number.getNumber());
}
}
现在,有人可以解释我这些情况:
我想知道编译器在这里解释的内容:private Number number = new Number();
初始化有问题的对象并传递所需的方法
正确将一个对象初始化为null然后调用该对象上的函数,如图所示
简要说明
我想知道你是否可以调用另一个类的方法:
没有所需的静态功能
重要不继承这些类,因为我想使用这些类的方法,例如:
答案 0 :(得分:1)
我想知道你是否可以调用另一个类的方法:
没有所需的静态功能
如果方法不是static
,那么您将需要该对象的实例来调用它。
Object o = new Object();
o.doSomething();
您是如何访问实例方法的。
我的课程在概念上与番茄和机器不同,我称之为Machine into Tomato的方法
这很好。这称为composition
。组合是类之间的has a
关系。课程Man
has a
课程Car
,但Is a
课程Person
。并且如您所示,编写代码是完全有效的。这是使用组合仅显示所需复合对象的接口的方法。例如..
public class MyClass extends MyOtherClass
现在您刚刚公开了MyOtherClass
的整个界面。这可能是不可取的。
public class MyClass {
MyOtherClass otherClass;
public void doSomething() {
otherClass.doSomething();
}
}
现在,您只展示了doSomething()
方法。正如您所说,当您的对象在概念上不同但需要一些共享功能时,这非常有用。这是一个非常有效的代码实践。
注意 :鉴于您问题的混乱性,我想我已经错过了一些内容,所以请对所需的修改进行评论。