Methods Flashcards

1
Q

O que é um método com modificador Final?

A

Em caso de herança, o método não pode ser sobrescrito nas classes filhas.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

O que é um método com modificador Abstract?

A

Obriga as classes filhas a implementarem o método. O método abstrato não pode ter corpo definido.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

O que é um método com modificador Static?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Porque o código abaixo não compila?

public class Car{
    private static int totalCars;
    private int weight;
public static int getWeight() {
    return weight;
} }
A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Um membro estático pode ser acessado por uma instância que aponta para null?

A

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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Quais são os modificadores de acesso?

A

Public
private
default
protected

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Quais são as restrições de acesso do modificador private?

A

Membros definidos como private só podem ser acessados dentro da própria classe.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Quais as restrições de acesso de membros com modificadores default?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Quais as restrições de acesso de modificadores protected?

A

Pode ser acessado por classes e interfaces do mesmo pacote ou através de herança.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

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();
	}
}
A

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(); 
	}
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

O que é early return?

A

É 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");
    }
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

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");
    }
A

O código não compila pois existe um retorno antecipado.

Existe código que pode ser executado abaixo do retorno.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

O que acontece se chamamos um método que recebe Double, e passamos um int no lugar?

A

O código compila
Não gera exceção
O int é promovido à double

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

O que são varArgs?

A

varargs possibilita um método receber um número variável (não fixo) de parâmetros.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Quais as duas maneiras de receber um vetor varArgs?

A

public int sum(int… nums){

public int sum(int[] nums){

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Quais são as duas restrições cruciais para a utilização de varArgs?

A

Apenas um dos parâmetros de um método seja varargs.

Um parâmetro varargs deve ser sempre o último da assinatura do método para evitar ambiguidade.

17
Q

O código abaixo compila?

public void fly(int numMiles) { }
public void fly(short numFeet) { }

A

Sim, pois apesar de terem o mesmo nome, possuem parâmetros diferentes?

18
Q

O código abaixo compila?

public void fly(int numMiles) { }
public int fly(int numMiles) { }

A

Não! Apesar de possuírem retornos diferentes, o nome e os parâmetros são iguais!

19
Q

O código abaixo compila?

public void fly(int numMiles) { }
public static void fly(int numMiles) { }

A

Não! Apesar de possuírem retornos diferentes, o nome e os parâmetros são iguais!

20
Q

O que o código abaixo retorna?

public class ReferenceTypes {
	public void fly(String s) {
		System.out.print("string ");
	}
public void fly(Object o) {
	System.out.print("object ");
}

public static void main(String[] args) {
	ReferenceTypes r = new ReferenceTypes();
	r.fly("test");
	r.fly(56);
}  }
A

O código acima retorna string object. Se o metodo que recebe uma String não existisse, ele retornaria object object.

Primeiro é feita a busca pelo código mais especifico, caso não exista, o menos especifico será usado.

21
Q

O que o código abaixo retorna?

public class Plane {
	public void fly(int i) {
		System.out.print("int ");
	}
public void fly(long l) {
	System.out.print("long ");
}
	public static void main(String[] args) {
		Plane p = new Plane();
		p.fly(123);
		p.fly(123L);
	} 
}
A

O código acima retorna int long. Caso o método que recebe int não existisse, o método que recebe long seria usado, retornando long long.

Primeiro é feita a busca pelo código mais especifico, caso não exista, o menos especifico será usado.

22
Q

Como fazer static imports?

A

É possível fazer imports estáticos. Desta maneira não é preciso referenciar a classe. É como se o método pertencesse à sua classe:

import java.util.List;
import static java.util.Arrays.asList; // static import

23
Q

O que é um inicializador estático?

A

O inicializador estático é executado na primeira vez que a classe é usada.
Pode ser usado para inicializar variáveis estáticas.

public class Stc{
	static int num;
	public static void main(String str[]){
		System.out.println(num); // 4
	}
static{
	num=4;
} }