Método estático vs não estático
Um método é uma série de instruções executadas para executar 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). Nas linguagens orientadas a objetos, os métodos são usados como um mecanismo para operar dados armazenados em objetos..
O que é um método estático?
Na programação orientada a objetos, o método estático é um método associado a uma classe. Portanto, métodos estáticos não têm a capacidade de operar em uma instância específica de uma classe. Os métodos estáticos podem ser chamados sem usar um objeto da classe que contém o método estático. A seguir, é apresentado um exemplo de definição de um método estático em Java. A estática deve ser usada ao definir um método estático em Java.
classe pública MyClass public static void MyStaticMethod () // código do método estáticoO método estático definido acima pode ser chamado da seguinte maneira, usando o nome da classe à qual pertence.
MyClass.MyStaticMethod ();
Uma coisa importante a ser observada é que métodos estáticos podem acessar apenas 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 e 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'). Portanto, dentro do método, essa palavra-chave pode ser usada para se referir ao objeto que chamou o método. A seguir, é apresentado um exemplo de definição de um método de instância em Java.
classe pública MyClass public void MyInstanceMethod () // código do método da instância
O método de instância definido acima pode ser chamado da seguinte forma, usando um objeto da classe à qual ele pertence.
MyClass objMyClass = new MyClass ();
objMyClass.MyInstanceMethod ();
Qual é a diferença entre o 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 chamar um método não estático, mas métodos estáticos não têm esse requisito. Eles podem ser simplesmente chamados 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 essa palavra-chave não pode ser usada em métodos estáticos, pois não estão associados a um objeto específico.