IS-A
Em OO o conceito de IS-A é baseado na herança de classe e implementação de interface. É uma forma de dizer que uma classe A é do tipo de uma classe B.
A relação IS-A é expressa através das palavras-chave extends (herança) e implements (interface). Se a expressão A instanceof B retorna true, então A IS-A B, mesmo se uma classe não herde diretamente da outra, ou seja, mesmo se existam outras classes na herança.
interface Celular {
}
public class Nokia implements Celular {
}
public class N95 extends Nokia {
public static void main(String[] args) {
N95 n95 = new N95();
Nokia nokia = new Nokia();
if (n95 instanceof Nokia)
System.out.println("N95 IS-A " +
"Nokia");
if (n95 instanceof Celular)
System.out.println("N95 IS-A " +
"Celular");
if (nokia instanceof Celular)
System.out.println("Nokia IS-A " +
"Celular");
}
}
HAS-A
Uma relação HAS-A é baseada no uso, ao invés de herança. Em outras palavras, a classe A HAS-A B se um código na classe A faz referência a uma instância da classe B.
class Cachorro {
}
public class App {
//App HAS-A Cachorro
Cachorro cachorro = new Cachorro();
}
Fonte: SCJP Sun Certifi ed Programmer for Java 6 Study Guide
0 comentários:
Postar um comentário