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