2016-07-22 2 views
1

Я новичок в Java. У меня есть два пакета в моем текущем проекте. Каждый из пакетов имеет два класса, называемых «packageClassOne» и «packageClassTwo».Как вызвать целый класс из другого класса в Java?

В пакетеClassTwo есть конструктор и другие общедоступные методы.

Я хочу вызвать PackageClassTwo из списка if, расположенного в PackageClassOne. Мой код выглядит примерно так

packageClassOne:

public class packageClassOne { 
    public void selectComponent(boolen) { 
     if(/* check condition*) { 
      packageClassTwo value = new packageClassTwo(); 
     } 
    } 
} 

packageClassTwo:

public class packageClassTwo { 

    public packageClassTwo(String name){  //Constructor 
     int length = name.length(); 
    } 

    public String CreateWord(){ 
     /*functionality ofthis method*/ 
    } 

    public String CreateSentence(){ 
     /*functionality ofthis method*/ 
    } 
} 

Проблема в том, что каждый раз, когда я называю packageClassTwo от моего packageClassOne он пытается вызвать конструктор вместо вызова класса. Я хочу вызвать весь пакетClassTwo, а не только конструктор.

Может ли кто-нибудь помочь мне, пожалуйста? Заранее благодарю вас за помощь.

+1

Что вы имеете в виду при вызове всего пакетаClassTwo вместо просто конструктора? – Oscar

+0

Если конструктор не вызван, как вы строите объект packageClassTwo? –

+0

@Oscar Я хочу вызвать весь класс packageClassTwo, чтобы все методы в классе ithat выполнялись. – Goldengirl

ответ

5

Поскольку Java является объектно-ориентированным языком, вы должны иметь мышление, связанное с экземплярами, которые являются реализациями классов, которые вы определили. Это объекты.

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

//Instantiate an object by calling the constructor 
packageClassTwo object = new packageClassTwo(string); 
//Now call its methods 
String val = object.CreateWord() 

Нет такой вещи, как «вызов класса». Вы вызываете методы объектов класса.

Иногда может быть обоснованная необходимость вызова методов класса без инициализации объектов. Посмотрите на static methods and classes для дальнейшего чтения.

0

Если вы хотите вызвать все методы из packageClassTwo, вызывать их из конструктора packageClassTwo

public packageClassTwo(String name) 
{  
    int length = name.length(); 
    CreateWorld(); 
    CreateSentence(); 
} 
2

Если вы хотите назвать все методы packageClassTwo вы должны сделать это явно

packageClassTwo pct = new packageClassTwo(""); 
pct.CreateWord(); 
pct.CreateSentence(); 

Если вы все еще хотите, чтобы 2 метода вызывались при создании нового объекта packageClassTwo, вы можете просто добавить вызовы к конструктору

public packageClassTwo(String name) {  
    int length = name.length(); 
    pct.CreateWord(); 
    pct.CreateSentence(); 
} 

Edit:

Обратите внимание, что во втором случае, если вы в конечном итоге только вызова 2 метода из конструктора, то лучше сделать их частными.

Как Замечание, это общая конвенция в Java, чтобы имена классов начинаются с прописной буквы: PackageClassTwo не packageClassTwo и метод имена начинаются с строчными буквами createWord не CreateWord. Это сделает ваш код более читаемым.

0

Я не думаю, что ваш код будет работать без компиляции ошибок. Потому что вы не объявили конструктор packageClassTwo().

+0

По умолчанию конструктор аргументов по умолчанию не будет добавлен во время компиляции. – noscreenname

+0

Нет, в вашей среде IDE будет отображаться красная ошибка сразу, если вы попытаетесь создать новый экземпляр со стандартным конструктором. – wero

+0

конструктор по умолчанию добавляется только в том случае, если вы не определили какой-либо конструктор. – wero

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