Methods Flashcards
O que é um método com modificador Final?
Em caso de herança, o método não pode ser sobrescrito nas classes filhas.
O que é um método com modificador Abstract?
Obriga as classes filhas a implementarem o método. O método abstrato não pode ter corpo definido.
O que é um método com modificador Static?
O método deixa de ser um membro da instância e passa a ser acessado diretamente através da classe.
Com este modificador o método ou atributo pertence à classe e não ao objeto. Por isso não é necessário uma instância para acessa-lo.
Porque o código abaixo não compila?
public class Car{ private static int totalCars; private int weight;
public static int getWeight() { return weight; } }
Ele faz uso de uma variável não estática dentro de um método estático.
Não use um método ou atributo não estático dentro de um estático.
Um membro estático pode ser acessado por uma instância que aponta para null?
Sim!
A instancia pode ser null e mesmo assim métodos estáticos funcionam.
Koala k = new Koala(); System.out.println(k.count); // k is a Koala k = null; System.out.println(k.count); // k is still a Koala
Quais são os modificadores de acesso?
Public
private
default
protected
Quais são as restrições de acesso do modificador private?
Membros definidos como private só podem ser acessados dentro da própria classe.
Quais as restrições de acesso de membros com modificadores default?
Se não definirmos nenhum modificador explicitamente, o compilador define como Default.
Neste caso os membros da classe só estão visíveis dentro do próprio pacote e não é acessível através de herança.
Quais as restrições de acesso de modificadores protected?
Pode ser acessado por classes e interfaces do mesmo pacote ou através de herança.
Porque o código abaixo não funciona?
package bird; public class Pardal{ proctected void come(){ System.out.println("Pardal Come"); } }
import bird.*; public class Mod { public static void main(String... args){ Pardal pardal = new Pardal(); pardal.come(); } }
O método não funciona pois a classe Mod tenta acessar um membro com modificador protected.
Vale lembrar que isso só poderia acontecer caso acontecesse uma herança.
O método abaixo funciona perfeitamente:
import bird.*; public class Mod extends Pardal{ public static void main(String... args){ Mod mod = new Mod(); mod.come(); } }
O que é early return?
É o retorno antecipado.
Um metodo pode ter um retorno antecipado.
Mas se existir algum código a ser executado fora do método teremos um erro de compilação.
class A { void nothing(int i) { if(i >= 0) return; // early return System.out.println("negative"); } }
class A { void nothing(int i) { if(i >= 0) { return; // compile error System.out.println(">= 0"); } System.out.println("< 0"); }
Porque o código abaixo não compila?
class A { void nothing(int i) { if(i >= 0) { return; System.out.println(">= 0"); } System.out.println("< 0"); }
O código não compila pois existe um retorno antecipado.
Existe código que pode ser executado abaixo do retorno.
O que acontece se chamamos um método que recebe Double, e passamos um int no lugar?
O código compila
Não gera exceção
O int é promovido à double
O que são varArgs?
varargs possibilita um método receber um número variável (não fixo) de parâmetros.
Quais as duas maneiras de receber um vetor varArgs?
public int sum(int… nums){
public int sum(int[] nums){