Método Estático vs Não Estático
Um método é uma série de instruções que são executadas para realizar uma tarefa específica. Os métodos podem receber entradas e produzir saídas. Métodos estáticos e não estáticos são dois tipos de métodos presentes em linguagens de programação orientadas a objetos. Um método estático é um método associado a uma classe. Um método associado a um objeto é chamado de método não estático (instância). Em linguagens orientadas a objetos, os métodos são usados como um mecanismo para operar em dados armazenados em objetos.
O que é um método estático?
Na programação orientada a objetos, método estático é um método associado a uma classe. Portanto, os métodos estáticos não têm a capacidade de operar em uma instância específica de uma classe. Métodos estáticos podem ser invocados sem usar um objeto da classe que contém o método estático. A seguir está um exemplo de definição de um método estático em Java. O estático deve ser usado ao definir um método estático em Java.
public class MyClass { public static void MyStaticMethod() { // código do método estático }
}
O método estático definido acima pode ser chamado da seguinte forma usando o nome da classe a que pertence.
MyClass. MyStaticMethod();
Uma coisa importante a ser observada é que métodos estáticos só podem acessar membros estáticos.
O que é um método não estático?
Um método não estático ou um método de instância é um método associado a um objeto em uma classe. Portanto, métodos não estáticos são chamados usando um objeto da classe na qual o método está definido. Um método não estático pode acessar membros não estáticos, bem como membros estáticos de uma classe. Em muitas linguagens orientadas a objetos (como C++, C, Java), quando um método não estático é chamado, o objeto que invocou o método é passado como um argumento implícito (é chamado de referência ‘this’). Assim, dentro do método esta palavra-chave pode ser usada para se referir ao objeto que chamou o método. A seguir está um exemplo de definição de um método de instância em Java.
public class MyClass { public void MyInstanceMethod() { // código do método de instância }
}
O método de instância definido acima pode ser chamado da seguinte forma usando um objeto da classe a que pertence.
MinhaClasse objMinhaClasse=new MinhaClasse();
objMyClass. MyInstanceMethod();
Qual é a diferença entre Método Estático e Não Estático?
Métodos estáticos são métodos associados a uma classe, enquanto métodos não estáticos são métodos associados a objetos de uma classe. Uma classe precisa ser instanciada primeiro para invocar um método não estático, mas os métodos estáticos não têm esse requisito. Eles podem ser simplesmente invocados usando o nome da classe que contém o método estático. Outra diferença importante é que um método não estático geralmente possui uma referência ao objeto que chamou o método e pode ser acessado usando a palavra-chave this dentro do método. Mas esta palavra-chave não pode ser usada em métodos estáticos, pois eles não estão associados a um objeto específico.