在java中实例化其他类的对象

时间:2014-03-16 09:54:18

标签: java oop object

我遇到这种情况:

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然后调用该对象上的函数,如图所示

简要说明

我想知道你是否可以调用另一个类的方法:

  1. 没有所需的静态功能

  2. 重要不继承这些类,因为我想使用这些类的方法,例如:

    • 我的课程在概念上与番茄和机器不同,我将机器的方法称为番茄

1 个答案:

答案 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()方法。正如您所说,当您的对象在概念上不同但需要一些共享功能时,这非常有用。这是一个非常有效的代码实践。

注意 :鉴于您问题的混乱性,我想我已经错过了一些内容,所以请对所需的修改进行评论。