노승현
추상 클래스란? 본문
[ 추상 클래스 & 인터페이스 ]
추상클래스는 어떻게 등장하였는가?
기존에 이미 많은 자식 클래스들이 있었는데,
이들의 부모 클래스가 없어, 부모 클래스를 정의하기 위해 탄생
객체를 정의하는데에는 관심이 없다.
객체생성이 불가능하다.
ex)[추상] 포켓몬- [추상]전기,물 - 피카츄,꼬부기
ex)[추상] 챔피언-티모,아리,아무무, ...
ex)[추상] 모양-원,네모,세모,별, ...
ex)[추상] 동물- 강아지,고양이, ...
ex) 사람 - 학생,직원 (상위 클래스중에 추상이 아닌 것도 있다.)
클래스를 정의하는데에 관심이 있다.
추상클래스를 사용하는 이유
1) 객체화를 막기 위함
2) 추상 메서드를 사용하기 위함
메서드 오버라이딩 강제
3) 추상 클래스의 목적: 추상 클래스는 공통된 메서드나 필드들을 하위 클래스에서 중복하여 구현하지 않도록 하여 코드 재사용성과 유지보수성을 높임
인터페이스란?
추상메소드를 모아둔 파일
1) 클래스 x2) 모든 메서드가 public static 추상메서드3) implements 를 사용하여 불러온다.
인터페이스 예시
public interface TVimpl {
void turnOn();
void turnOff();
void soundUp();
void soundDown();
}
인터페이스 사용 예시
class LgTV implements TVimpl{
@Override
public void turnOn() {
// TODO Auto-generated method stub
System.out.println("티비 전원 on");
}
@Override
public void turnOff() {
// TODO Auto-generated method stub
System.out.println("티비 전원 off");
}
@Override
public void soundUp() {
// TODO Auto-generated method stub
System.out.println("티비 소리++");
}
@Override
public void soundDown() {
// TODO Auto-generated method stub
System.out.println("티비 소리--");
}
}
public class Test01 {
public static void main(String[] args) {
LgTV tv =new LgTV();
tv.turnOn();
tv.turnOff();
tv.soundUp();
tv.soundDown();
}
}