본문 바로가기
프로젝트 & 실습/실습 & 평가 등

[실습] 상속&오버라이딩&추상화 실습

by hhyyyjun 2022. 12. 31.

오늘 배운 추상화를 통해 직접 실습 진행

1. 노래 정보를 위한 추상클래스 생성

2. 각 장르에 따라 출력값이 다르므로 추상메서드 생성

3. 부모클래스를 상속받는 자식클래스에 추상메서드에 대한 오버라이딩

4. 메인 함수에서 장르의 값을 입력하고 노래제목, 작곡가, 연주자/가수 를 입력했을 때

5. 본인이 적은 노래의 정보를 출력, 장르 값에 따른 오버라이딩된 함수 호출

package Exercise;
import java.util.Scanner;
abstract class Music{ //추상,부모 클래스
	String janre; //장르 값이 들어갈 변수
	String song; //곡 제목 값이 들어갈 변수
	String musician; //작곡가 값이 들어갈 변수
	String player; //가수/연주자 값이 들어갈 변수

	abstract void showInfo(); //노래정보 추상메서드
	abstract void lyrics(); //가사 유뮤 추상메서드
	abstract void mood(); //분위기 추상메서드
	Music(String janre, String song, String musician, String player){ //매개변수 생성자
		this.janre=janre;
		this.song=song;
		this.musician=musician;
		this.player=player;
	}
}

class Pop extends Music{
	@Override //오버라이딩
	void showInfo() {
		System.out.println("["+this.janre+"]"+"노래제목 : "+this.song+", 작곡가 : "+this.musician+", 가수 : "+this.player);
	}
	@Override
	void lyrics() {
		System.out.println("가사가 있는 곡입니다");
	}
	@Override
	void mood() {
		System.out.println("너무 신나욧ㅅㅅ");
	}
	Pop(String janre, String song, String musician, String player){
		super(janre, song, musician, player); //부모클래스 생성자 호출
	}
}

class Classic extends Music{
	@Override
	void showInfo() {
		System.out.println("["+this.janre+"]"+"노래제목 : "+this.song+", 작곡가 : "+this.musician+", 연주자 : "+this.player);
	}
	@Override
	void lyrics() {
		System.out.println("가사가 없는 곡입니다");
	}
	@Override
	void mood() {
		System.out.println("너무 차분해요...");
	}
	Classic(String janre, String song, String musician, String player){
		super(janre, song, musician, player);
	}
}

public class Exercise {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.print("장르를 입력해주세요(Pop/Classic중 입력(대소문자 구분)) : ");
		String janre = sc.next();
		System.out.print("제목을 입력해주세요 : ");
		String song = sc.next();
		System.out.print("작곡가를 입력해주세요 : ");
		String musician = sc.next();
		System.out.print("연주자/가수를 입력해주세요 : ");
		String player = sc.next();
		if(janre.equals("Pop")) { //장르가 Pop가 같다면~
			Pop p = new Pop(janre, song, musician, player); //생성자에 매개변수 값 대입
			p.showInfo(); //showInfo함수 호출
			p.lyrics(); //lyrics함수 호출
			p.mood(); //mood함수 호출
		}
		else if(janre.equals("Classic")) { //장르가 Classic가 같다면~
			Classic c = new Classic(janre, song, musician, player);
			c.showInfo();
			c.lyrics();
			c.mood();
		}
	}
}

 

'프로젝트 & 실습 > 실습 & 평가 등' 카테고리의 다른 글

[평가] DBMS 평가  (1) 2023.01.01
[평가] 문제 오답풀이  (0) 2023.01.01
[실습] ArrayList 실습  (0) 2022.12.31
[실습&발표] 버블정렬  (0) 2022.12.31
[실습] 별 그리기  (0) 2022.12.31

댓글