Как получить доступ к методу во внешних классах в Java? - PullRequest
0 голосов
/ 30 января 2012

У меня есть такие классы, как:

 class myClass1 {
   public void test() {};

 class myClass2 {

  public void test() {};
 class myClass3 {
    test();
....................
 } } }

Как быть уверенным, что метод test из myClass 1, а не из myClass2? Спасибо.

Ответы [ 5 ]

6 голосов
/ 30 января 2012
myClass1.this.test();

Кстати, в Java очень строго принято начинать имена классов с заглавных букв.

2 голосов
/ 30 января 2012

Доступ к внешним экземплярам со следующим синтаксисом:

myClass1.this.test()

myClass2.this.test()

Тогда это однозначно.

Примечание. Как правильно заметили другие, myClass1 с небольшим m - плохое имя класса. Таким образом, в приведенном выше примере кода выглядит, как будто я обращаюсь к экземпляру myClass1 на первый взгляд, но на самом деле я обращаюсь к классу , чтобы получить текущий включающий экземпляр. Это было бы очевидно при соблюдении соглашений об именах: MyClass1.this возвращает этот конкретный экземпляр.

2 голосов
/ 30 января 2012

Просто сделай myClass1.this.test();

0 голосов
/ 30 января 2012

Вам понадобится создать объект myClass1 для вызова этого метода.Вы не можете напрямую вызывать методы, пока class2 не расширяет class1.

myClass1 obj = new myClass1();
obj.test();

NOTE

Соблюдайте надлежащие соглашения об именах Java.

Имя класса должно бытьMyClass1

0 голосов
/ 30 января 2012

Если вы вызываете объект, это всегда будет метод из класса объекта:

MyClass2 testObject = new MyClass2();
testObject.test(); // calls method from MyClass2

Если ваши методы статические, вам нужно указать класс при вызове:

MyClass2.test();

Или, если у вас есть MyClass3 объект и вы хотите позвонить MyClass1#test():

MyClass1.this.test(); 
// will run the method from MyClass1, even if its a MyClass3 object
...