2014-09-24 7 views
0

Итак, я только начал программировать, а что нет, и этот вопрос заставил меня срывать мои волосы. Он спрашивает: «При каких обстоятельствах, может ли статический метод вызвать метод экземпляра?» Я попытался вернуться к главам, где он упоминает оба метода и не дает никаких намеков. Может кто-то поможет? Будет оценен.Может ли статический метод вызвать метод экземпляра в Java

+3

«Когда у него есть ссылка на экземпляр, на который он хочет вызвать метод»? –

ответ

0

Чтобы вызвать метод экземпляра, вам понадобится экземпляр. Таким образом, статический метод может вызывать метод экземпляра, если он ссылается на экземпляр для его вызова.

0

Статические методы можно вызывать свободно, но методы экземпляров можно вызвать только в том случае, если у вас есть экземпляр класса. Статический метод должен либо получить экземпляр откуда-то, либо создать его сам.

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

class Foo { 
    static void staticMethod() { 
     Foo foo = new Foo(); 
     foo.instanceMethod(); 
    } 

    void instanceMethod() { } 
} 

Или статический метод может быть передан экземпляр его вызывающей.

class Foo { 
    static void staticMethod(Foo foo) { 
     foo.instanceMethod(); 
    } 

    void instanceMethod() { } 
} 

Это не единственные пути, но они являются общими. Требуется, чтобы статический метод так или иначе попадал в экземпляр.

1

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

Например:

public static void main(String[] args) { 
    String foo = "hello"; 
    System.out.println(foo.length()); 
} 

length() является методом экземпляра на String, main статический метод, но я все еще прекрасно назвать это ... потому что foo предоставляет ссылку.

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

0

Если объект является параметром метода -> sure Но статический метод не может работать с нестатическими переменными класса, поскольку эти переменные являются специфичными для каждого экземпляра этого класса, а статические методы не зависят от объект и только существуют ОДИН РАЗ независимо от количества объектов класса.

Объясняет ли это это?

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