Metodos de instância

Amigos,
Vi em um material falando sobre “métodos de classes” e “métodos de instância” !
Metodos de classe é um metodo comum inserido em uma classe ! OK.
Agora o que é métodos de instância ? alguem tem um exemplo.
Obrigado.

Quase. Metodo de instância é que é o padrão. Métodos de classe são os que possuem a palavra-chave ‘static’.

Veja… se você prestar atenção, todo método é escrito dentro de uma classe, então não é apenas isso que define se um método é de classe ou de instância…

Na verdade, métodos de classe são os métodos estáticos (marcados com o modificador static) e não precisam de uma instância da classe (objeto daquela classe que você criou com um operador “new”) para serem invocados… basta vc acessá-los através do nome da classe e, por isso, são chamados “métodos de classe”.

Ex.: a classe Math tem vários métodos estáticos e você não precisa (inclusive nem pode, pois ela não tem um construtor visível) instanciar um objeto da classe Math para chamar seus métodos. Ao invés disso, vc faz:

//invoco o método round através da classe Math
//sem precisar de uma instância da classe.
Math.round(2.567);

O exemplo mais comum de método de classe é o ponto de entrada das aplicações Java… que é o método main… se vc olhar a assinatura do main, perceberá que ele é estático e, portanto, um método de classe:

public static void main(String[] args);

Já métodos de instância são aqueles que não são estáticos e para serem invocados é preciso você instanciar um objeto e invocar o método a partir desse objeto.

Ex.:

String s = "minha string";
//invoco o método concat através de uma instância 
//da classe String (referenciada pela variável s2)
String s2 = s.concat("final");

//invoco o método println através de uma instância 
//da classe PrintStream (referenciada pela variável System.out)
System.out.println(s2);

A assinatura do método concat é como segue:

public String concat(String s);

Note que não tem o modificador “static” e, por isso, é um método de instância, pois precisa de um objeto para invocá-lo.

Resumindo:

  • Métodos de classe são métodos marcados com static e não precisam de um objeto para invocá-los (mesmo que possa ser invocado a partir de um objeto)
  • Métodos de instância são aqueles que não são marcados com static e precisam de um objeto para invocá-los.

[]'s

1 curtida