🔖 다형성 보장
부모
가 명령을 내리면 자식
이 반드시 동작(반응)을 해야한다.
- 다형성
전제조건 4가지
필수 --> (상속관계, 재정의, 업캐스팅,동적바인딩)
- 반드시
재정의(override)
가 되어야 한다.
- 부모클래스를
추상클래스
로 만든다.
💡 추상클래스란?
- 불완전한 클래스
- 메서드의 구현부가 없다.(추상메서드)
- 접근제한자 뒤에
abstract
를 붙여 사용한다.
- 단독으로 객체를 생성할 수 없다.
- 다형성을 일부 보장하기 위해 등장
- 서로 비슷한 클래스의 공통된 부분들을 묶을 때 사용한다.
- 부모의 역할로 사용한다.
- 구현된 메서드를 가질 수 있다.
💡 추상메서드란?
- 메서드의 구현부가 없는 메서드
- 반드시 자식이 완전하게 재정의 해야한다.
pulic abstract class Animal {
public abstract void eat();
}
🔖 인터페이스
- 서로 다른 클래스의 공통된 부분을 묶을 때 사용한다.
- 다형성이 100% 보장된다.
- 부모가 인터페이스이면 자식의 내부 동작방식을 전혀 몰라도 동작 시킬 수 있다.
- 부모의 역할을 할 수 있다.
- 단독으로 객체를 생성할 수 없다.
추상메서드
와 final static 상수
만 올 수 있다.
- 구현된 메서드를 가질 수 없다.
- 자식클래스에
implements
를 붙여 사용한다.
🔖 인터페이스에서 사용하는 final static 상수
public interface RemoCon {
public final static int MAXCH = 99;
public final static int MINCH = 1;
public void chUp();
public void chDown();
public void volUp();
public void volDown();
public void internet();
}
public class TV implements RemoCon{
private int currch = 10;
@Override
public void chUp() {
currch++;
if(currch>RemoCon.MAXCH) {
currch=1;
}
System.out.println("TV의 채널이 올라간다.");
}
@Override
public void chDown() {
currch--;
if(currch<RemoCon.MINCH) {
currch=99;
}
System.out.println("TV의 채널이 내려간다.");
}
🔖 인터페이스와 다중상속
- 자바는 기본적으로 단일상속만 지원한다.
- 단, 인터페이스를 활용하여 다중상속을 구현할 수 있다.
public class Dog extends Animal implements Pet, Robots{
}
Animal r = new Dog();
Pet r = new Dog();
Robots r = new Dog();
public interface B extends A{
}
public class C implements B {
}
B obj = new C();
A obj = new C();
🔖 추상클래스와 인터페이스 공통점&차이점
📌 공통점
- 다형성을 보장
- 추상 메서드를 가질 수 있다.
- 단독으로 객체를 생성할 수 없다.
- 부모의 역할로 사용된다.(업캐스팅)
📌 차이점
- 서로 비슷한 클래스의 공통부분을 묶을 때 사용 : 추상클래스
-> 추상메서드와 구현메서드를 가질 수 있다.
- 서로 다른 클래스의 공통부분을 묶을 때 사용 : 인터페이스
-> 추상메서드와 final static 변수(상수)를 가질 수 있다.