Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

Super Coding Addict

Ch8. 추상 클래스 (1) 본문

JAVA 문법

Ch8. 추상 클래스 (1)

밍응애 2021. 3. 6. 19:23

< 추상 클래스란? >

* 추상 클래스

- 추상 메서드를 포함한 클래스

- 추상 메서드는 구현 코드가 없이 선언부만 있는 메서드

- abstract 예약어 사용

- 추상 클래스는 new(인스턴스화) 할 수 없다

 

* 추상 클래스 구현

- 메서드와 클래스에 abstract 키워드를 사용

- 추상 클래스 상속 후 구현시 모든 추상메서드를 구현하지 않으면 여전히 추상클래스

- 모든 메서드를 구현하여도 클래스에 abstract 키워드를 사용하면 추상 클래스 (공통메서드를 가지는 기반이 되는 클래스라고 한다면 인스턴스화할 수 없지만 추상 클래스로 쓸 수 있음)

 

* 추상 클래스 사용하기

- 추상 클래스는 주로 상속의 상위클래스로 사용됨

- 추상 메서드는 하위 클래스가 구현해야 하는 메서드

- 구현된 메서드는 하위 클래스가 공통으로 사용하는 기능의 메서드로 하위 클래스에 따라 재정의 가능

 

- 예제 : Computer 추상클래스

 

# Computer 클래스

package ch8.abstractEx;

public abstract class Computer {
	
	public abstract void display();
	public abstract void typing();
	
	public void turnOn() {
		System.out.println("전원을 켭니다");
	}
	
	public void turnOff() {
		System.out.println("전원을 끕니다");
	}
}

 --> display(), typing() 두 개의 추상메서드와 turnOn(), turnOff() 두 개의 일반메서드를 가진 추상클래스

--> 이 추상클래스를 상속한 클래스들은 추상메서드를 구현하거나 일반메서드를 재정의할 수 있음

 

 

# DeskTop 클래스 -- Computer클래스 상속

package ch8.abstractEx;

public class DeskTop extends Computer {

	@Override
	public void display() {
		System.out.println("DeskTop display");
		
	}

	@Override
	public void typing() {
		System.out.println("DeskTop typing");
	}

	@Override
	public void turnOff() {
		System.out.println("desktop turnOff");
	}
	
	
	
}

--> Computer 추상클래스를 상속하여 추상메서드였던 display(), typing()메서드를 구현 & 일반메서드인 turnOff()메서드를 재정의

 

 

# NoteBook 클래스 -- Computer클래스 상속

package ch8.abstractEx;

public abstract class NoteBook extends Computer {

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

}

--> typing()과 display() 두 개의 메서드를 모두 구현해야하나 typing()메서드만 구현하였으므로 display()메서드는 여전히 추상메서드이기에 NoteBook클래스는 추상클래스이다

 

# MyNoteBook클래스 -- NoteBook클래스 상속

package ch8.abstractEx;

public class MyNoteBook extends NoteBook {

	@Override
	public void display() {
		
		System.out.println("MyNoteBook display");
		
	}
	
}

--> NoteBook클래스를 상속

--> NoteBook클래스에서 구현하지 않아 추상메서드로 남아있었던 display()메서드를 구현

 

 

# ComputerTest 클래스 (메인)

package ch8.abstractEx;

public class ComputerTest {

	public static void main(String[] args) {
		
		Computer computer = new DeskTop();
		computer.display();
		computer.turnOff();
		
		NoteBook myNote = new MyNoteBook();
	}

}