오늘 배운 추상화를 통해 직접 실습 진행
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 |
댓글