Нет. Предположим, что у вас есть этот код этот код:
public class NameOfProgram
{
public static void main(String[] args)
{
A aa = new A();
aa.fly();
}
}
Тогда переменная бб внутри аа создается с утверждением new A()
. Таким образом, вам не нужно создавать объект B и устанавливать его на bb, поскольку он уже существует.
Кроме того, вам нужно объявить переменную вне конструктора, иначе вы не сможете использовать ее в других методах, например fly. Чтобы исправить это, Вы можете сделать это:
public class A
{
B bb; <-----------------
public A()
{
bb = new B(NameOfVariableIForgotAbout);
}
public void fly()
{
bb.doFly() //Now this should work
}
}
вы также можете, но B bb;
после метода, я просто предпочитаю это таким образом.
Кроме того, ваш класс A имеет несколько ошибок (поэтому вы обратите внимание на последующую ссылку). Во-первых, если вы хотите, чтобы иметь возможность вызвать метод из экземпляра класса (A aa = new A(); aa.fly()
), то вам необходимо сделать методы общественного так:
public void fly()
{
//Insert code here
}
Кроме того, вы объявили конструктор неправильно. Вот как вы это сделали:
public A
{
//Insert code here
}
и это делается так:
public A()
{
//Insert code here
}
Первая ошибка приведет к ошибке компиляции, если вы сделаете вызов aa.fly()
, потому что она не является ни частной, ни общественности.
Вторая причина ошибки компиляции, даже если вы не вызываете вызов метода.
Вам нужно будет показать код для B - есть ли метод doFly() или он наследует от A? – 2010-11-28 12:11:53