자바의 정석과 오픈튜토리얼의 강좌를 통해 작성한 내용입니다.
0. 들어가기에 앞서
abstract : 상속해서 사용하도록 강제하는 것
위 코드는 다음과 같은 에러를 가진다.
abstract로 선언한 추상클래스 A는 반드시 상속을 해야 한다.
abstract class A{
public abstract int b(); // 추상메서드 (즉, 로직을 가질 수 없음) B클래스에서 b메서드 구현
public void d(){
System.out.println("business");
}
}
class B extends A {
public int b(){ // 추상클래스 A의 b메서드를 구체적으로 구현.
return 1;
}
}
class exercise
{
public static void main(String[] args){
// A name = new A();
B name = new B();
}
}
추상메서드가 하나라도 있으면, 그 메서드를 담는 클래스는 "추상클래스"여야 한다.
1. 추상클래스(abstract class)
추상클래스는 자손클래스에 의해서만 완성될 수 있다.
abstract class 클래스이름 { // 메서드 내용 //}
추상클래스로 지정되면 클래스의 인스턴스를 생성할 수 없다.
2. 추상메서드(abstract method)
추상메서드는 선언부만 작성하고 구현부는 작성하지 않은 것이 추상메서드이다.
이를 만드는 이유는 메서드의 내용이 상속받는 클래스에 따라 달라질 수 있기 때문이다.
abstract class Player { // 추상 클래스
abstract void play(int pos); // 추상 메서드
abstract void stop(); // 추상 메서드
// }
class AudioPlayer extends Player{
void play(int pos) { 해당 내용 } // 추상 메서드 "구현"
void stop(); { 해당 내용 } // 추상 메서드 "구현"
}
abstract class AbstractPlayer extends Player {
void play(int pos) { 해당 내용 } // 추상 메서드 "구현"
}
3. 추상클래스의 작성
상속이 (자손 클래스)를 만드는데 (조상 클래스)를 이용하는 거라면
추상화는 기존 클래스들의 공통분모를 추출해 (조상 클래스)를 만드는 것이다.
'프로그래밍 > JAVA' 카테고리의 다른 글
[JAVA} 예외처리(Exceptpion Handing) (0) | 2016.08.07 |
---|---|
[JAVA] 인터페이스(Interface) (1) | 2016.08.04 |
[JAVA] 다형성(polymorphism) (3) | 2016.08.02 |
[JAVA] 제어자(modifier) (0) | 2016.08.02 |
[JAVA} 클래스 패스(Class Path)와 패키지(Package) (1) | 2016.08.01 |