다형성을 보장한다는 의미는 무엇인가?
public class Animal {
public void eat(){
System.out.println("동물처럼 먹다.");
}
}
public class Animal {
public void eat(){
System.out.println("동물처럼 먹다.");
}
}
public class Cat extends Animal {
public void eat(){
System.out.println("고양이처럼 먹는다/");
}
public void night(){
System.out.println("고양이는 자는걸 좋아함");
}
}
Animal ani = new Cat();
Animal ani = new Dog();
부모를 호출하지 않는 이상 부모클래스인 eat메서드 안에서 굳이 출력문을 적어줄 필요가 없다.
그래서 사용하는게 추상 메서드이다
추상클래스
public abstract class Animal {
public abstract void eat(); //추상메서드(불완전한 메서드):메서드 구현부가 없다
// 추상클래스는 단독으로 사용할 수 없고 자식의 도움을 받아야함
//그래서 다형성이 보장된다.
}

만약 서로 다른 동작을 가지는 클래스를 상속관계로 만들어서 동작을 시켜야한다고 가정해보자
-> 서로 다른 동작의 클래스도 공통 기능을 만들어서 상속구조로 사용 가능?
public abstract class RemoCon {
//chUp(), chDown(), volUp, volDown()
public abstract void chUp();
public abstract void chDown();
public abstract void volUp();
public abstract void volDown();
public void intternet(){
System.out.println("인터넷이 구현된다.");
}
}
Remocon이라는 부모와
Tv, Radio라는 자식 클래스가 있다.
Tv()에는 Remocon(부모)의 구현메서드 (internet();)을 상속받아도 아무런 문제가 없는데
Radio()는 internet()이라는 메서드가 필요가 없는데 강제로 상속받아야한다.
이러한 문제를 해결하기 위해 인터페이스를 사용한다.
100퍼센트 다형성을 보장받지 못한다.
상수는 대문자로 작성

추상클래스 : 추상메서드 + 구현메서드 ( public void aa(){System.out.print();})

인터페이스 : 추상메서드+final static변수



좋은 글 감사합니다. 자주 올게요 :)