추상 클래스의 의미와 구현하는 방법

0

Java 공부

목록 보기
7/18
  • 추상이란 실체 간에 공통되는 특성을 추출한 것을 의미한다.
  • 추상 클래스는 객체를 직접 생성할 수 있는 클래스를 실체 클래스라고 한다면 클래스들의 공통적인 특성을 추출해서 선언한 클래스를 추상 클래스라고 한다.
  • 추상 클래스는 실체 클래스의 공통되는 필드와 메서드를 추출해서 만들었기 때문에 객체를 직접 생성해서 사용할 수 없다. 즉, 추상 클래스는 new 연산자를 사용해서 인스턴스를 생성시키지 못한다는 것이다.
  • 모든 메서드가 구현 된 클래스라도 abstract로 선언되면 추상 클래스로 인스턴스화 할 수 없음
Human human = new Human(); // 불가능
  • 메서드 구현 코드가 없으면 abstract 로 선언

Computer 추상 클래스

public abstract class Computer {
	// Computer에서 구현하지 못하는 기능은 추상메서드 사용!!
	public abstract void display();
	public abstract void typing();
	// Computer의 공통기능 구현!
	public void turnOn() {
		System.out.println("전원을 켭니다");
	}
	public void turnOff() {
		System.out.println("전원을 끕니다");
	}
}
  • 추상 클래스의 추상 메서드는 하위 클래스가 상속 하여 구현

Computer 에서 추상화한 내용을 작성하면 상속만 적용.

public class Desktop extends Computer {
	@Override
	public void display() {
		System.out.println("Desjktop display");
	}
	@Override
	public void typing() {
		System.out.println("Desktop typing");
	}
}

Computer의 추상메서드들(display(), typing())을 모두 상속하지 않으면 abstract 사용하여 추상화!

public abstract class NoteBook extends Computer{ // Computer의 추상메서드들을 모두 상속하지 않으면 abstract 사용하여 추상화!
	@Override
	public void display() {
		System.out.println("NoteBook display ");
	}
}

NoteBook 에서 Computer 추상메서드를 모두 상속하지 않아 MyNoteBook에서 나머지 추상메서드 작성

public class MyNoteBook extends NoteBook{
	@Override
	public void typing() {
		System.out.println("MyNoteBook typing");
	}
}

추상클래스를 사용하는 이유는 상속과 비슷하다.
하위클래스에서 구체적으로 명시함으로 규격에 맞는 실체클래스 구현!

public class ComputerTest {
	public static void main(String[] args) {
//		Computer computer = new Computer(); // 추상 클래스는 new 할 수 없음(인스턴스화 할 수 없음)
//		NoteBook note = new NoteBook(); // 추상 클래스는 new 할 수 없음
		Computer desktop = new Desktop();// 만약 desktop이 abstract를 사용하는 추상클래스가 된다면 인스턴스화 할 수 없다.
		Computer notebook = new MyNoteBook();
		desktop.turnOff();
		desktop.display();
		notebook.typing();
	}
}

전원을 끕니다
Desjktop display
MyNoteBook typing

0개의 댓글