DEVLOG

추상 (Abstract) 본문

Java

추상 (Abstract)

BINTHEWORLD 2022. 5. 21. 16:14

자바에서는 미완성의 클래스라고 할 수 있는 추상 클래스를 제공

직접적으로 객체 인스턴스를 생성할 수 없으나, 새로운 클래스를 작성하는데 밑바탕이 되는 역할

미리 설계로서 틀을 갖추고 클래스를 작성할 수 있게 한다는 기능적인 측면에서 의미가 있음

추상 클래스를 사용하려면 반드시 상속을 받아야 하며, 모든 추상 메소드는 반드시 구현을 해주어야 한다.

추상 클래스에서 public void 메소드를 사용한다면 구현까지 해주어야 한다.

추상클래스 Player.java 

// 추상클래스
abstract class Player {
	// 추상메소드
	abstract void play(String songName);
	abstract void pause();
	abstract void stop();
	
}

Main.java

추상클래스 상속 후 반드시 Add unimplemented methods로 추상메소드 구현해야 함

// Add unimplenented methods
// 추상클래스 상속하면 구현 안된 추상메소드 반드시 구현해줘야 함
public class Main extends Player{

	public static void main(String[] args) {
		// static메소드에서 다른 메소드 호출하려면 다른 메소드 역시 static 선언되어야 함
		// 대안으로 main 클래스의 인스턴스를 만들면 사용 가능
		Main main = new Main();
		main.play("화이트 - 네모의 꿈");
		main.pause();
		main.stop();

	}

	@Override
	void play(String songName) {
		System.out.println(songName + " 곡을 진행합니다.");
	}

	@Override
	void pause() {
		System.out.println("곡을 일시정지합니다.");	
	}

	@Override
	void stop() {
		System.out.println("곡을 정지합니다.");
	}

}

추상클래스 Animal.java

// 추상클래스
abstract class Animal {
	abstract void crying(); // 추상메소드
}

Dog.java

public class Dog extends Animal{ // 추상클래스 상속
	// 추상메소드 구현
	@Override
	void crying() {
		System.out.println("월! 월!");
	}
}

Cat.java

public class Cat extends Animal{ // 추상클래스 상속
	// 추상메소드 구현
	@Override
	void crying() {
		System.out.println("냐옹~");
	}
}

Main.java

// Add unimplenented methods
// 추상클래스 상속하면 구현 안된 추상메소드 반드시 구현해줘야 함
public class Main{
	public static void main(String[] args) {
    	// 인스턴스화
		Dog dog = new Dog();
		Cat cat = new Cat();
        // 추상메소드 호출
		dog.crying();
		cat.crying();
	}
}
Comments