2017-01-15 3 views
-6

(новичок на Java) Я не мог найти именно этот вопрос на SO. У меня есть проект, с двумя файлами (phseudo-код):Использовать метод из другого класса, например, родные методы?

Первый Java File (класс)

public class A { 
    public void xyz() { System.out.println("hello");} 
} 

Второй Java File (класс)

public class B Extends ZZZZZ { 
    public void callme() { 
     xyz(); // <----------------- I want to call in this way, but It cant be done like this. 
    } 
} 

Как сделать xyz() успешно позвонить (как будто был определен внутри b() класс изначально !!).

p.s. опять же, я не хочу называть его имя класса впереди, как это:

a.xyz(); 
+0

* «называть это показывает ошибку» * какая ошибка? –

+2

также: это ваш исходный код, это неизвестный класс 'string' или ваш сдвиг ключа ненадежный? –

+2

'new' - нехорошее имя для переменной ... – luk2302

ответ

1

Okay несколько возможностей:

Instantiate A:

A a=new A(); 
a.xyz(); 

(вы не хотите этого)

Наследственность:

public class B extends A {...} 

и

public class A extends ZZZZZ{...} 

так что вы все еще можете расширить ZZZZZ;

Интерфейс:

public interface A{...} 

public class B extends ZZZZZ implements A{...} 

Статический метод:

public class A{ 
    public static void xyz() 
    { 
    System.out.println("hello"); 
    } 
} 

public class B{ 
    public void callme() 
    { 
     A.xyz()); 
    } 
} 
3

Вся идея методов экземпляра, как xyz в этом, является то, что вы используете состояние экземпляра A в метод, не передавая этот экземпляр в качестве аргумента следующим образом:

... String xyz(A thisInstance, ...) {...} 

Вместо этого вы используете:

A thisInstance = ...; 
thisInstance.xyz(...); 

Вот почему вам нужен экземпляр A, потому что это практически аргумент функции.


Однако, если вы не нужду экземпляр A, вы можете сделать статический метод:

static String xyz(...) {...} 

Тогда вы можете назвать это без передачи экземпляра A:

A.xyz(...); 

Вы можете использовать статический импорт, чтобы не писать A:

import static A.xyz; 

... 

xyz(...); 
+0

есть способ импортировать все функции из 'A' (не отдельные методы из' A') –

+1

@ T.Todua Да, вы можете использовать подстановочный знак: 'import static A. *;' –

+0

последний метод doesnt работает ... он показывает 'can not fidn symbol method xyz()' –

0

Это поможет вам.

class A { 
    public void xyz() { 
     System.out.println("hello"); 
    } 
} 
class ZZZZZ extends A{ 

} 
class B extends ZZZZZ { 
    public void callme() { 
     xyz();// <----------------- calling this shows error 
    } 
} 
+1

, пожалуйста, разместите их в одном ответе, вместо многих ответов .. спасибо в любом случае, но, похоже, не решение, 'ZZZZZ' уже зарегистрирован класс проекта. –

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