2013-07-09 3 views
1

Этот код работает отлично для меня.Как создать объект класса java

public class ABC 
{ 
    public int sayHello() 
    { 
    System.out.println("Hello Friends...!!!"); 
    return 1; 
    } 
} 

public class XYZ 
{ 
    public static void main(String[] args){ 
    // 1 Option 
    ABC objABC = new ABC(); 
    int i = objABC.sayHello(); 

    // 2 Option 
    int j = new ABC().sayHello(); 
    } 
} 

Здесь я назвал sayHello() метод Class ABC с двумя разными способами. Я просто хочу знать, какой вариант оптимален и подходит для использования.

+0

Может быть, оффтопик, но почему «sayHello» возвращает int? –

+0

@ Невилл К, я просто хочу объяснить вам, что я хочу, чтобы ваша сторона, бессмысленная название метода. – Vijay

ответ

0

Определенно первый вариант

1) Если вам нужно снова вызвать тот же самый метод, вы не должны вызывать конструктор снова. То есть вы не создадите другой экземпляр и не сохраните время загрузки для создания нового объекта.

2) Если вы хотите закрыть поток или установить его на нуль (как это требуется для операций, связанных с IO), вторая опция не даст вам никакого ссылочного объекта, и каждый вызов будет конструктором.

1
  • С ABC objABC = new ABC() у вас всегда будет ссылка на объект. С new ABC() вы не можете получить второй доступ.
  • Предположим, что существует два метода. sayHello() и sayGoodBye(), затем используя первый способ. вам просто нужно позвонить им, используя objABC.sayHello и objABC.sayGoodBye().
  • Но во втором случае вы создаете объект без ссылки и , вызывая метод на нем. Вы не можете выполнить какую-либо другую операцию на объекте , не ссылаясь на него с помощью некоторой ссылочной переменной.

Так что всегда лучше использовать первый вариант ABC objABC = new ABC();

т.е.
1

Вы используете ссылку класса ABC в обоих случаях, чтобы сделать вызов метода sayHello(). В случае № 1 ссылка может быть использована повторно для совершения других вызовов, а в случае с случай №2 ссылка на объект, который был создан, потеряна, поэтому вы не можете делать дальнейшие вызовы в этом экземпляре.

Нет оптимального ответа как такового. Используйте # 1, если вы хотите сохранить экземпляр и ссылку на него.

1

Идея создания объекта для вызова одного метода довольно странная, но, как всегда, это зависит.

Вариант 1: это лучше, если вам понадобится objABC для дальнейших вызовов sayHello() в будущем.

Вариант 2: Если вас интересует только один звонок, это нормально. Но я бы рассмотрел статический метод в этом случае, чтобы сохранить экземпляр объекта.

1

зависит от цели.Если вы просто хотите, чтобы выполнить метод, не имея ссылку на объект, из которого был вызван метод:

int j = new ABC().sayHello(); 

Если вы хотите сохранить ссылку на этот объект, и повторно использовать его позже, то:

ABC objABC = new ABC(); 
      int i = objABC.sayHello(); 
1

ABC objABC = new ABC(); намного лучше, у вас есть экземпляр вашего объекта, и вы можете использовать его, когда вы хотите

, если вы хотите сделать называть как int j = new ABC().sayHello(); я думаю, что лучше иметь его статическим, так что вы можете назвать его без создания экземпляра класса ABC.sayHello()

2

Определенно первый вариант

1) Если вам нужно снова вызвать тот же самый метод, вы не должны вызывать конструктор снова. То есть вы не создадите другой экземпляр.

2) Если вы хотите закрыть поток или установить его на нуль (как это требуется для операций, связанных с IO), второй вариант не даст вам никакого ссылочного объекта.

1

Если вы просто хотите выполнить метод, не имея ссылки на объект. Поэтому он используется при вызове только одного метода.

int j = new ABC().sayHello(); 

Но

ABC objABC = new ABC(); 
int i = objABC.sayHello(); 

Это лучше, если вам нужно будет objABC для дальнейших обращений к SayHello() в будущем.

Смежные вопросы