개발의 시작과 끝
2020.05.03 / Day - 21 자바 11~15일차 복습 본문
21일차
11일 - 상속을 통한 캐스팅
캐스팅 허용
class Main {
public static void main(String[] args) {
칼 a칼 = new 칼();
a칼 = new 활();
}
}
class 칼 { }
class 활 extends 칼 { }
상식적으로 활은 칼이 아니지만 칼을 상속받음으로써 코드 실행이 가능해진다.
매개변수 - 마지막 공격방식 기억
// 문제 : 매개변수를 사용해서 전사가 매번 다르게 공격하도록 해주세요.
class Main {
public static void main(String[] args) {
전사 a전사 = new 전사();
a전사.공격("브라이언", "칼");
// 브라이언이(가) 칼(으)로 공격합니다.
a전사.재공격();
// 브라이언이(가) 칼(으)로 공격합니다.
a전사.공격("필립", "창");
// 필립이(가) 창(으)로 공격합니다.
a전사.공격("마크", "지팡이");
// 마크(가) 지팡이(으)로 공격합니다.
a전사.재공격();
// 마크(가) 지팡이(으)로 공격합니다.
a전사.재공격();
// 마크(가) 지팡이(으)로 공격합니다.
}
}
class 전사 {
String 공격자명;
String 무기명;
void 공격(String 공격자명, String 무기명) {
this.공격자명 = 공격자명;
this.무기명 = 무기명;
재공격();
}
void 재공격() {
System.out.printf("%s(이)가 %s(으)로 공격합니다!\n", 공격자명, 무기명);
}
}
12일 - 형변환, 구성
형변환
class Main {
public static void main(String[] args) {
페라리 a페라리 = new 페라리();
자동차 a자동차;
// 수동형변환, 수동캐스팅
a자동차 = (자동차)a페라리;
// 자동형변환, 자동캐스팅
// 자바가 판단하기에 안전한 경우만 자동형변환이 가능하다.
a자동차 = a페라리;
페라리 a페라리2 = (페라리)a자동차;
}
}
class 자동차 {
void 달리다() {}
void 서다() {}
}
class 페라리 extends 자동차 {
void 뚜껑이_열리다() {}
}
구성
class Main {
public static void main(String[] args) {
사람 a사람 = new 사람();
a사람.나이 = 20;
a사람.a왼팔 = new 팔();
}
}
class 사람 {
// 클래스안에 변수를 정의 할 수 있다.
int 나이;
팔 a왼팔;
}
class 팔 {
}
13일 - abstract
class Main {
public static void main(String[] args) {
사람 a김철수 = new 김철수();
사람 a김영희 = new 김영희();
a김철수.배달_음식_주문하다();
// 영화반점에서 김철수(010-1234-1234)에게 매운 짬뽕(을)를 배달합니다.
a김영희.배달_음식_주문하다();
// 북경반점에서 김영희(010-4321-4321)에게 안매운 짬뽕(을)를 배달합니다.
a김영희.a좋아하는_음식점 = a김철수.a좋아하는_음식점;
a김영희.선호하는_음식의_매운정도 = "아주 매운";
a김영희.선호하는_음식 = "짜장";
a김영희.배달_음식_주문하다();
// 영화반점에서 김영희(010-4321-4321)에게 아주 매운 짜장(을)를 배달합니다.
}
}
class 사람 {
String 이름;
String 전화번호;
음식점 a좋아하는_음식점;
String 선호하는_음식의_매운정도;
String 선호하는_음식;
void 배달_음식_주문하다() {
a좋아하는_음식점.주문(이름, 전화번호, 선호하는_음식의_매운정도, 선호하는_음식);
}
}
class 김철수 extends 사람 {
김철수() {
이름 = "김철수";
전화번호 = "010-1234-1234";
a좋아하는_음식점 = new 영화반점();
선호하는_음식의_매운정도 = "매운";
선호하는_음식 = "짬뽕";
}
}
class 김영희 extends 사람 {
김영희() {
이름 = "김영희";
전화번호 = "010-4321-4321";
a좋아하는_음식점 = new 북경반점();
선호하는_음식의_매운정도 = "안매운";
선호하는_음식 = "짜장";
}
}
abstract class 음식점 {
String 이름;
void 주문(String 주문자명, String 주문자_전화번호, String 음식, String 매운정도) {
System.out.println(이름 + "에서 " + 주문자명 + "(" + 주문자_전화번호 + ")에게 " + 매운정도 + " " + 음식 + "(을)를 배달합니다.");
}
}
class 영화반점 extends 음식점 {
영화반점() {
이름 = "영화반점";
}
}
class 북경반점 extends 음식점 {
북경반점() {
이름 = "북경반점";
}
}
14일 - 인력관리소
class Main {
public static void main(String[] args) {
사람인력관리소 a사람인력관리소 = new 사람인력관리소();
a사람인력관리소.add사람("홍길순", 33);
// 나이가 33살인 1번째 사람(홍길순)이 추가되었습니다.
a사람인력관리소.add사람("홍길동", 20);
// 나이가 20살인 2번째 사람(홍길동)이 추가되었습니다.
a사람인력관리소.add사람("임꺽정", 30);
// 나이가 30살인 3번째 사람(임꺽정)이 추가되었습니다.
a사람인력관리소.add사람("임꺽순", 50);
// 나이가 50살인 4번째 사람(임꺽순)이 추가되었습니다.
a사람인력관리소.add사람("임선달", 52);
// 나이가 52살인 5번째 사람(임선달)이 추가되었습니다.
사람 a사람1 = a사람인력관리소.get사람(1);
a사람1.자기소개();
// 저는 1번, 홍길순, 33살 입니다.
사람 a사람2 = a사람인력관리소.get사람(2);
a사람2.자기소개();
// 저는 2번, 홍길동, 20살 입니다.
사람 a사람3 = a사람인력관리소.get사람(3);
a사람3.자기소개();
// 저는 3번, 임꺽정, 30살 입니다.
사람 a사람4 = a사람인력관리소.get사람(4);
a사람4.자기소개();
// 저는 4번, 임꺽순, 50살 입니다.
사람 a사람5 = a사람인력관리소.get사람(5);
a사람5.자기소개();
// 저는 5번, 임선달, 52살 입니다.
}
}
class 사람인력관리소 {
사람[] 사람들;
int 마지막_사람_번호;
사람인력관리소() {
마지막_사람_번호 = 0;
사람들 = new 사람[100];
}
void add사람(String 이름, int 나이) {
int 번호 = 마지막_사람_번호 + 1;
사람 a사람 = new 사람();
a사람.번호 = 번호;
a사람.이름 = 이름;
a사람.나이 = 나이;
사람들[번호 - 1] = a사람;
System.out.printf("나이가 %d살인 %d번째 사람(%s)이 추가되었습니다.\n", 나이, 번호, 이름);
마지막_사람_번호 = 번호;
}
사람 get사람(int 번호) {
return 사람들[번호 - 1];
}
}
class 사람 {
int 번호;
String 이름;
int 나이;
void 자기소개() {
System.out.printf("저는 %d번, %s, %d살 입니다.\n", 번호, 이름, 나이);
}
}
15일 - 전사 무기변경
class Main {
public static void main(String[] args) {
전사 a전사1 = new 전사();
a전사1.a왼손무기 = new 칼();
a전사1.공격();
// 출력 => 전사가 왼손으로 칼(을)를 사용합니다.
전사 a전사2 = new 전사();
a전사2.a왼손무기 = new 창();
a전사2.a오른손무기 = new 도끼();
a전사2.공격();
// 출력 => 전사가 왼손으로 창(을)를 사용합니다.
// 출력 => 전사가 오른손으로 도끼(을)를 사용합니다.
}
}
class 전사 {
무기 a왼손무기;
무기 a오른손무기;
void 공격() {
if ( a왼손무기 != null ) {
a왼손무기.작동("전사", "왼손");
}
if ( a오른손무기 != null ) {
a오른손무기.작동("전사", "오른손");
}
}
}
class 무기 {
void 작동(String 사용자, String 사용부위) {
}
}
class 칼 extends 무기 {
void 작동(String 사용자, String 사용부위) {
System.out.println(사용자 + "가 " + 사용부위 + "으로 칼(을)를 사용합니다.");
}
}
class 창 extends 무기 {
void 작동(String 사용자, String 사용부위) {
System.out.println(사용자 + "가 " + 사용부위 + "으로 창(을)를 사용합니다.");
}
}
class 도끼 extends 무기 {
void 작동(String 사용자, String 사용부위) {
System.out.println(사용자 + "가 " + 사용부위 + "으로 도끼(을)를 사용합니다.");
}
}
'풀스택 > 자바 공부, 복습' 카테고리의 다른 글
2020.05.05 / Day - 23 자바 시험문제 복습 (0) | 2020.05.05 |
---|---|
2020.05.05 / Day - 23 자바 Calendar (0) | 2020.05.05 |
2020.05.03 / Day - 21 자바 8~10일차 복습 (0) | 2020.05.03 |
2020.05.01 / Day - 20 자바 6~7일차 복습 (0) | 2020.05.01 |
2020.05.01 / Day - 20 format 출력 형식 (0) | 2020.05.01 |