자바 프로그래밍 입문
8주
강남
입문
x 1
## 주제
- 자바 프로그래밍 입문
## 목표
- 자바를 활용한 나만의 프로그램 만들기!
## 커리큘럼
### Part 1: 헬로 자바
1. 자바 기본 문법
2. 메소드와 조건문
3. 반복문과 배열
### Part 2: 객체지향의 세계로!
4. 클래스와 객체
5. 자바 API
6. 상속과 인터페이스
7. 파일 입출력
8. 실전 프로젝트
## 대상
- 프로그래머를 꿈꾸는 당신!
## 시간 및 장소
- 협의
## 연락처
- 카톡: chaesam
- 메일: sehongpark@cloudstudying.kr
# 자바 프로그래밍 시작하기
---
## 발표준비
1. **프로그래밍**(programming)이란? (https://cloudstudying.kr/questions/251)
2. **컴파일링**(compiling)이란? (https://cloudstudying.kr/questions/273)
2. 자바의 특징 - **객체지향**(Object-Oriented)이란? (https://cloudstudying.kr/questions/252)
3. 컴퓨터의 3대 구성요소 - **CPU**, **Memory**, **I/O Device**란? (https://cloudstudying.kr/questions/255)
## 실습하기
1. 헬로월드 (https://cloudstudying.kr/challenges/56)
2. 자기소개 (https://cloudstudying.kr/challenges/57)
## 확인하기
1. **클래스**(class)란? (https://cloudstudying.kr/questions/258)
2. **주석**(comment)이란? (https://cloudstudying.kr/questions/259)
3. **메인 메소드**(method)란? (https://cloudstudying.kr/questions/260)
4. **문자열**(string)을 출력하려면?
## 피드백
- 추가로 궁금한점?
- 아쉬운 부분이 있다면?
- 어떻게 개선하면 좋을까?
- 좋았던 점 나누기!
# 변수와 타입 그리고 연산자
---
## 발표준비
1. **변수**란? (https://cloudstudying.kr/questions/256)
2. **타입**이란 무엇이고, 그 종류는? (https://cloudstudying.kr/questions/257)
3. **연산자**란 무엇이고, 그 종류는? (https://cloudstudying.kr/questions/258)
## 실습하기
1. 시험 점수 입력 (https://cloudstudying.kr/challenges/58)
2. 입력 값 받아오기 (https://cloudstudying.kr/challenges/60)
3. 이번 주 수입은? (https://cloudstudying.kr/challenges/59)
4. 두 수의 곱과 몫 (https://cloudstudying.kr/challenges/163)
5. 속도 변환하기 (https://cloudstudying.kr/challenges/154)
6. 시간 변환하기 (https://cloudstudying.kr/challenges/170)
## 확인하기
1. **문자열**에 **변수**를 더하려면? (https://cloudstudying.kr/questions/261)
2. `printf()` 메소드 사용법? (https://cloudstudying.kr/questions/262)
## 피드백
- 추가로 궁금한점?
- 아쉬운 부분이 있다면?
- 어떻게 개선하면 좋을까?
- 좋았던점 나누기!
# 연산자 우선순위와 문자열 연결하기
---
## 발표준비
1. **연산자 우선순위**란? (https://cloudstudying.kr/questions/264)
2. **문자열**(String)이란? (https://cloudstudying.kr/questions/265)
3. 여러 **문자열**을 **연결**하려면? (https://cloudstudying.kr/questions/265)
## 실습하기
1. 떡튀순 모두 얼마? (https://cloudstudying.kr/challenges/62)
2. 한 주간 평균 몸무게 (https://cloudstudying.kr/challenges/63)
3. 문자열 연결하기 (https://cloudstudying.kr/challenges/64)
4. 프로필 만들기 (https://cloudstudying.kr/challenges/5)
5. 원기둥의 부피와 겉넓이 (https://cloudstudying.kr/challenges/166)
## 확인하기
1. 다음 코드의 실행 결과는?
```
int a = 3;
int b = 7;
int c = 9;
System.out.println("결과: " + a + b * (a - c));
```
2. `Math.PI`는 무엇? (https://cloudstudying.kr/questions/266)
## 피드백
- 추가로 궁금한 점?
- 아쉬운 부분이 있다면?
- 어떻게 개선하면 좋을까?
- 좋았던점 나누기!
# 연습문제 - 자바 기본 문법
---
## 복습하기
- 프로그래밍, 객체지향, CPU, Memory, I/O Device, main(), println(), 문자열
- 변수, 타입, 연산자, 연산자 우선순위, printf(), Math
## 연습문제
1. 이번달 월급은? (https://cloudstudying.kr/challenges/68)
2. 절적한 수조의 온도는? (https://cloudstudying.kr/challenges/69)
3. 환전하기 (https://cloudstudying.kr/challenges/70)
4. 각 자리수의 합 (https://cloudstudying.kr/challenges/71)
## 확인하기
1. 메인 메소드에 전달값 입력 방법은? (https://goo.gl/S1bpHP)
2. 아래 코드의 실행 결과는?
```
int a = 42;
int b = 2;
int c = 4;
int result = 0;
result += a;
result *= b;
result %= c;
System.out.println(result);
```
## 피드백
- 추가로 궁금한 점?
- 아쉬운 부분이 있다면?
- 어떻게 개선하면 좋을까?
- 좋았던점 나누기!
# 타입과 형변환
---
## 발표준비
1. **타입 불일치**(type mismatched)란? (https://cloudstudying.kr/questions/267)
2. 타입 **캐스팅**(type casting)이란? (https://cloudstudying.kr/questions/268)
- 업 캐스팅(= auto casting)
- 다운 캐스팅(= explicit casting)
## 실습문제
1. 나눗셈 연산 주의점 (https://cloudstudying.kr/challenges/73)
2. 타입 불일치 해결 (https://cloudstudying.kr/challenges/74)
3. 타입변환 연습 (https://cloudstudying.kr/challenges/75)
4. 문자열을 숫자로 (https://cloudstudying.kr/challenges/76)
## 확인하기
1. 다음 코드의 결과는?
```
int a = 5 / 2;
double b = 5 / 2;
```
2. 해당 코드의 문제점과 해결책은?
```
String seven = 7;
```
3. 아래 코드의 수행 과정은?
```
double x = 82.45;
double y = (int) x;
double z = (int) y / 8;
```
4. 다음 코드의 출력 결과는?
```
String str = "5";
int num = Integer.parseInt(str);
System.out.println(str + num);
```
## 피드백
- 추가로 궁금한 점?
- 아쉬운 부분이 있다면?
- 어떻게 개선하면 좋을까?
- 좋았던점 나누기!
# 메소드(method)
---
## 발표준비
1. **메소드**(method)란? (https://cloudstudying.kr/questions/269)
2. 메소드의 **특징**은? (https://cloudstudying.kr/questions/269)
- 입력과 반환
- 일련의 코드를 압축(abstract)
3. 메소드의 구조는? (https://cloudstudying.kr/questions/269)
- **타입**(type)
- **메소드명**(name)
- **입력변수**(parameter)
- **반환값**(return)
4. 변수의 활동영역**(scope)**이란?
## 실습내용
1. 메소드의 실행흐름 (https://cloudstudying.kr/challenges/44)
2. 라면 끓이기 (https://cloudstudying.kr/challenges/82)
3. 단일 파라메터 메소드 (https://cloudstudying.kr/challenges/77)
4. 다중 파라미터 메소드 (https://cloudstudying.kr/challenges/78)
5. 잘못된 파라미터 (https://cloudstudying.kr/challenges/83)
6. 리턴 값이 있는 메소드 (https://cloudstudying.kr/challenges/79)
7. 변수의 스코프 (https://cloudstudying.kr/challenges/84)
8. 내가 먹은 삼겹살은 몇 칼로리? (https://cloudstudying.kr/challenges/85)
## 확인하기
1. `void` 타입 메소드란? (https://cloudstudying.kr/questions/270)
2. 다음 메소드를 호출하여 정수 `7`을 얻으려면?
```
public static int add (int a, int b) {
return a + b;
}
```
3. 해당 메소드의 문제점은?
```
public static int cube(double x) {
return x * x * x;
}
```
4. 아래 코드의 실행 흐름을 **스택**(stack) 호출과정으로 표현?
```
public class VariableScope2 {
public static void method(int x) {
System.out.println("method x = " + x);
x = x * x;
System.out.println("method x = " + x);
}
public static void main(String[] args) {
int x = 5;
System.out.println("main x = " + x);
method(x);
System.out.println("main x = " + x);
}
}
```
## 피드백
- 추가로 궁금한 점?
- 아쉬운 부분이 있다면?
- 어떻게 개선하면 좋을까?
- 좋았던점 나누기!
# 연습문제 - 메소드
---
## 복습하기
- 형변환(casting), 업/다운 캐스팅, 문자열을 정수로, 정수를 문자열로
- 메소드, 변수의 스코프(scope), void와 int 차이, 메소드 실행 흐름과 스택(stack)
## 연습문제
1. 칼로리 소모량은? (https://cloudstudying.kr/challenges/80)
2. 자동차의 연비는? (https://cloudstudying.kr/challenges/81)
3. 돈 놓고 돈 먹기 (https://cloudstudying.kr/challenges/86)
## 확인하기
- 임의의 난수를 만드는 법? (https://cloudstudying.kr/questions/263)
## 피드백
- 아쉬운 부분이 있다면?
- 어떻게 개선하면 좋을까?
- 좋았던점 나누기!
# 조건문(conditionals)
---
## 발표준비
1. **조건문**(conditionals)이란 무엇이고, 그 종류는? (https://cloudstudying.kr/questions/271)
2. **비교 연산자**란 무엇이고, 그 종류는? (https://cloudstudying.kr/questions/275)
3. **논리 연산자** AND, OR 그리고 NOT은? (https://cloudstudying.kr/questions/276)
## 실습하기
1. 성인 인증이 필요합니다 (https://cloudstudying.kr/challenges/87)
2. 레어 아이템 (https://cloudstudying.kr/challenges/88)
3. 멋진 회사의 조건 (https://cloudstudying.kr/challenges/89)
4. 버스 카드 (https://cloudstudying.kr/challenges/90)
## 확인하기
다음 코드의 실행 흐름을 스택 메모리 그림을 통해 설명하시오.
```
class IfStatement3 {
public static void test(int x) {
if (x > 5) {
System.out.println(x + " is > 5");
} else if (x == 5) {
System.out.println(x + " equals 5");
} else {
System.out.println(x + " is < 5");
}
}
public static void main(String[] arguments) {
test(6);
test(5);
test(4);
}
}
```
## 피드백
- 아쉬운 점이 있다면?
- 어떻게 개선하면 좋을까?
- 좋았던 점 나누기!
# 연습문제 - 조건문
---
## 복습하기
- if, else, elseif, 비교 연산자, 논리 연산자
## 연습문제
1. 문자열을 숫자로 출력하기 (https://cloudstudying.kr/challenges/259)
2. 다이어트 (https://cloudstudying.kr/challenges/16)
3. 엘레베이터 (https://cloudstudying.kr/challenges/158)
4. 임금 계산하기 (https://cloudstudying.kr/challenges/17)
## 확인하기
1. switch문이란?
2. 삼항 연산자란?
## 피드백
- 아쉬운 점이 있다면?
- 어떻게 개선하면 좋을까?
- 좋았던 점 나누기!
# 반복문
---
## 발표준비
1. **반복문**이란?
2. `while`과 `for`의 차이?
3. **분기문**이란?
- `break`
- `continue`
4. 중첩된(**nested**) 반복문이란?
## 실습하기
1. 카운트 다운 (https://cloudstudying.kr/challenges/91)
2. 1부터 10까지 (https://cloudstudying.kr/challenges/92)
3. 다이어트 실패 (https://cloudstudying.kr/challenges/195)
4. break (https://cloudstudying.kr/challenges/93)
5. continue (https://cloudstudying.kr/challenges/94)
6. 네모네모 (https://cloudstudying.kr/challenges/95)
7. 공포의 별찍기 (https://cloudstudying.kr/challenges/96)
## 확인하기
1. 출력 결과는?
```
int i = 0;
int n = 0;
while (i < 10) {
n = n + i;
i++;
}
System.out.println(n);
```
2. 출력 결과는?
```
String str = "";
for (int i = 0; i < 5; i++) {
str += i;
}
System.out.println(str);
```
3. 출력 결과는?
```
for (int i = 0; i < 5; i++) {
for (int j = 0; j < i + 2; j++) {
System.out.print("#");
}
System.out.println();
}
```
## 피드백
- 추가로 궁금한점?
- 아쉬운 부분이 있다면?
- 어떻게 개선하면 좋을까?
- 좋았던점 나누기!
# 배열
---
## 발표준비
1. **배열**이란?
2. 두 가지 **배열 생성법**은?
3. **배열 사용법**은?
- 가져오기(read)
- 변경하기(update)
- 배열의 길이(`length`)
## 실습하기
1. 당신의 학점은? (https://cloudstudying.kr/challenges/99)
2. 아메리카노 (https://cloudstudying.kr/challenges/100)
3. 배열의 합 (https://cloudstudying.kr/challenges/101)
4. 배열 요소 찾기 (https://cloudstudying.kr/challenges/179)
5. 지역별 접속자 수 (https://cloudstudying.kr/challenges/104)
6. 하루 평균 접속자 (https://cloudstudying.kr/challenges/105)
## 확인하기
1. 주어진 코드의 출력 값은?
```
double[] arr = {1.5, -6.2, 4.3, -0.9};
System.out.printf("%.2f", arr[1]);
```
2. 주어진 코드의 출력 값은?
```
int[] arr = {6, 4, 7, -9};
int n = arr[1];
n += arr[3];
n *= arr[2];
System.out.printf("%d", n);
```
3. 주어진 코드의 출력 값은?
```
int[] values = new int[7];
System.out.println(values.length);
```
4. 주어진 코드의 출력 값은?
```
double[] scores = {96.4, 82.8, 92.0, 86.8};
double sum = 0;
for (int i = 0; i < scores.length; i++)
sum += scores[i];
double average = sum / scores.length;
System.out.printf("%.2f", average);
```
## 피드백
- 추가로 궁금한점?
- 아쉬운 부분이 있다면?
- 어떻게 개선하면 좋을까?
- 좋았던점 나누기!
# 연습문제 - 반복문과 배열
---
## 복습하기
- 반복문, while, for, break, continue
- 배열, index, length
## 연습문제
1. 구구단 출력 (https://cloudstudying.kr/challenges/18)
2. 자음과 모음 (https://cloudstudying.kr/challenges/106)
3. 박테리아 (https://cloudstudying.kr/challenges/103)
4. 세 수의 곱 (https://cloudstudying.kr/challenges/162)
5. 1등은 누구? (https://cloudstudying.kr/challenges/108)
## 확인하기
1. 다음 코드의 실행 결과는?
```
public static void main(String[] args) {
int[] arr = createArray(3, 7);
System.out.printf("%d * %d = %d\n", arr[0], arr[1], arr[0] * arr[1]);
}
public static int[] createArray(int a, int b) {
return new int[] { b, a };
}
```
2. 다음 코드의 실행 결과는?
```
System.out.println((int) Math.pow(2, 3));
```
3. 다음 코드의 실행 결과는?
```
int[] arr = { 11, 22, 33, 44 };
System.out.println(Arrays.toString(arr));
```
4. 다음 코드의 실행 결과는?
```
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
int sum = 0;
for (int n = 0; n < i + j; n++) {
sum += n;
}
System.out.printf("%d ", sum);
}
System.out.println();
}
```
## 피드백
- 추가로 궁금한점?
- 아쉬운 부분이 있다면?
- 어떻게 개선하면 좋을까?
- 좋았던점 나누기!
# 클래스와 객체
---
## 발표준비
1. **객체지향 프로그래밍**(OOP)이란? (https://cloudstudying.kr/questions/252)
2. **클래스**와 **객체**의 차이? (https://cloudstudying.kr/questions/282)
3. **필드**(field)와 **메소드**(method)란? (https://cloudstudying.kr/questions/283)
4. **클래스 다이어그램**이란? (https://cloudstudying.kr/questions/284)
## 실습하기
1. 햄버거 클래스 (https://cloudstudying.kr/challenges/112)
2. 영웅 클래스 (https://cloudstudying.kr/challenges/114)
3. 텀블러 클래스 (https://cloudstudying.kr/challenges/229)
4. 도서 클래스 (https://cloudstudying.kr/challenges/232)
## 확인하기
1. 다음 코드의 실행 결과는?
```
public class Main {
public static void main(String[] args) {
AlarmClock clock = new AlarmClock();
clock.time = "7시 10분";
clock.repeat = 2;
clock.ring();
}
}
class AlarmClock {
String time;
int repeat;
void ring() {
for (int i = 0; i < repeat; i++)
System.out.printf("%s이 되었습니다!\n", time);
}
}
```
2. 다음 코드의 실행 결과는?
```
public class Main {
public static void main(String[] args) {
Pizza p = new Pizza();
p.name = "슈퍼콤비네이션";
p.size = "라지";
p.price = 14900;
p.print();
}
}
class Pizza {
String name;
String size;
int price;
void print() {
System.out.printf("[%s 피자] 사이즈: %s, 가격: %d원\n", name, size, price);
}
}
```
## 피드백
- 추가로 궁금한점?
- 아쉬운 부분이 있다면?
- 어떻게 개선하면 좋을까?
- 좋았던점 나누기!
# 객체의 생성과 사용
---
## 발표준비
1. **인스턴스**란 무엇이고, 어떻게 생성? (https://cloudstudying.kr/questions/285)
2. 인스턴스 **메소드 호출**법? (https://cloudstudying.kr/questions/286)
3. 같은 클래스로 **다른 인스턴스 생성**법? (https://cloudstudying.kr/questions/287)
## 실습하기
1. 쥬리오의 펀치 (https://cloudstudying.kr/challenges/115)
2. 팥, 야채, 피자 호빵 (https://cloudstudying.kr/challenges/116)
3. 에러를 찾아라 (https://cloudstudying.kr/challenges/202)
4. 정사각형 (https://cloudstudying.kr/challenges/230)
5. 원기둥 (https://cloudstudying.kr/challenges/231)
## 확인하기
## 피드백
- 추가로 궁금한점?
- 아쉬운 부분이 있다면?
- 어떻게 개선하면 좋을까?
- 좋았던점 나누기!
# 생성자와 클래스 타입
---
## 발표준비
1. **생성자**(constructor)란? (https://cloudstudying.kr/questions/291)
2. **객체**(instance)를 생성과 동시에 **초기화**하려면? (https://cloudstudying.kr/questions/292)
3. **클래스 타입**이란? (https://cloudstudying.kr/questions/293)
## 실습하기
1. 생성자를 통한 객체 값 초기화 (https://cloudstudying.kr/challenges/117)
2. 격투 게임 (https://cloudstudying.kr/challenges/118)
3. 생성자와 toString() 메소드 (https://cloudstudying.kr/challenges/161)
4. 재고 관리 (https://cloudstudying.kr/challenges/233)
5. 은행 계좌 만들기 (https://cloudstudying.kr/challenges/241)
6. 학생 클래스 (https://cloudstudying.kr/challenges/253)
7. 최소-최대값 구하기 (https://cloudstudying.kr/challenges/266)
## 확인하기
## 피드백
- 추가로 궁금한점?
- 아쉬운 부분이 있다면?
- 어떻게 개선하면 좋을까?
- 좋았던점 나누기!
# 레퍼런스 변수와 스태틱
---
## 발표하기
1. **레퍼런스**(reference) **변수**란?
2. **기본형**(primitive) 변수와 **레퍼런스** 변수의 **차이**는?
3. `static` 키워드란 **무엇**이고, **사용법**은?
## 실습하기
1. 원본일까 사본일까? (https://cloudstudying.kr/challenges/119)
2. 전체 학생 수 (https://cloudstudying.kr/challenges/120)
3. 클래스 메소드 vs 일반 메소드 (https://cloudstudying.kr/challenges/125)
4. 두 점 사이의 거리 (https://cloudstudying.kr/challenges/196)
## 확인하기
## 피드백
- 추가로 궁금한점?
- 아쉬운 부분이 있다면?
- 어떻게 개선하면 좋을까?
- 좋았던점 나누기!
# 연습문제 - 클래스와 객체
---
## 복습하기
- OOP, 클래스, 객체, 필드, 메소드, 클래스 다이어그램
- 인스턴스, 인스턴스 메소드, 서로 다른 인스턴스 확인,
- 생성자, 디폴트 생성자, 클래스 타입
- 레퍼런스 변수, 기본형 변수, 클래스 메소드, 클래스 변수
## 연습문제
1. Circle 객체 만들기 - https://cloudstudying.kr/challenges/220
2. 리얼 격투 게임 - https://cloudstudying.kr/challenges/121
3. 당신의 연봉은? - https://cloudstudying.kr/challenges/122
## 확인하기
## 피드백
- 추가로 궁금한점?
- 아쉬운 부분이 있다면?
- 어떻게 개선하면 좋을까?
- 좋았던점 나누기!
# 접근 제한자와 게터 세터
---
## 발표준비
1. **접근 제한자**(access modifier)란 **무엇**이고 **왜** 사용?
2. **접근 제한자**의 **종류**
3. **게터**(getter)와 **세터**(setter)란?
## 실습하기
1. 외부로부터 감추기 (https://cloudstudying.kr/challenges/131)
2. 감춰진 필드 읽어오기 (https://cloudstudying.kr/challenges/132)
3. 감춰진 필드 변경하기 (https://cloudstudying.kr/challenges/133)
## 확인하기
## 피드백
- 추가로 궁금한점?
- 아쉬운 부분이 있다면?
- 어떻게 개선하면 좋을까?
- 좋았던점 나누기!
# 스코프(scope)와 this
---
## 발표준비
1. **스코프**(scope)란?
2. `this` 키워드란?
## 실습하기
1. 계좌 이체 (https://cloudstudying.kr/challenges/134)
2. 스마트폰 (https://cloudstudying.kr/challenges/177)
## 확인하기
## 피드백
- 추가로 궁금한점?
- 아쉬운 부분이 있다면?
- 어떻게 개선하면 좋을까?
- 좋았던점 나누기!
# 자바 API
---
## 발표준비
1. **자바 API**란?
2. **패키지**(`package`)란?
3. 자바 **API 문서**보는법?
4. `Random` 클래스란?
5. `ArrayList` 클래스란?
## 실습하기
1. Random 클래스 (https://cloudstudying.kr/challenges/135)
2. ArrayList 클래스 (https://cloudstudying.kr/challenges/136)
3. 단어 추출하기 (https://cloudstudying.kr/challenges/260)
## 확인하기
## 피드백
- 추가로 궁금한점?
- 아쉬운 부분이 있다면?
- 어떻게 개선하면 좋을까?
- 좋았던점 나누기!
# 연습문제 - 자바 API
---
## 복습하기
- 접근 제한자, private, public, 게터, 세터
- 메소드 스코프, 인스턴스 스코프, 클래스 스코프, this
- 자바 API, package, Random, ArrayList
## 연습문제
1. 주사위 던지기 (https://cloudstudying.kr/challenges/38)
2. 연봉 지출 계산 (https://cloudstudying.kr/challenges/137)
## 확인하기
## 피드백
- 추가로 궁금한점?
- 아쉬운 부분이 있다면?
- 어떻게 개선하면 좋을까?
- 좋았던점 나누기!
# 상속(inheritance)
---
## 발표준비
1. **상속**이란?
2. `super` 키워드란?
2. **메소드 오버라이딩**(overriding)이란?
3. `protected` 키워드란?
## 실습하기
1. 상속을 통한 클래스 확장 (https://cloudstudying.kr/challenges/138)
2. 메소드 오버라이딩 (https://cloudstudying.kr/challenges/139)
3. 대마법사로 3차전직 (https://cloudstudying.kr/challenges/140)
4. 스포츠 확장하기 (https://cloudstudying.kr/challenges/234)
## 확인하기
## 피드백
- 추가로 궁금한점?
- 아쉬운 부분이 있다면?
- 어떻게 개선하면 좋을까?
- 좋았던점 나누기!
# 상속과 생성자 호출
---
## 발표하기
1. **상속 관계**에서의 **생성자 호출** 과정은?
2. **디폴트 생성자**란?
## 실습하기
1. 스포츠카 만들기 - https://cloudstudying.kr/challenges/141
2. 디폴트 생성자와 메소드 오버라이딩 - https://cloudstudying.kr/challenges/142
## 확인하기
## 피드백
- 추가로 궁금한점?
- 아쉬운 부분이 있다면?
- 어떻게 개선하면 좋을까?
- 좋았던점 나누기!
# 인터페이스(interface)
---
## 발표준비
1. **인터페이스**란?
2. 인터페이스의 *장점*?
## 실습하기
1. 학생의 본문 - https://cloudstudying.kr/challenges/174
2. 다형성 인생 - https://cloudstudying.kr/challenges/175
3. 칭구 아이가? - https://cloudstudying.kr/challenges/176
## 확인하기
## 피드백
- 추가로 궁금한점?
- 아쉬운 부분이 있다면?
- 어떻게 개선하면 좋을까?
- 좋았던점 나누기!
# 추상 클래스
---
## 발표준비
1. **추상 클래스**란?
2. 추상클래스의 *장점*?
## 실습하기
1. 추상 클래스 추출하기1 - https://cloudstudying.kr/challenges/237
2. 추상 클래스 추출하기2 - https://cloudstudying.kr/challenges/239
## 확인하기
## 피드백
- 추가로 궁금한점?
- 아쉬운 부분이 있다면?
- 어떻게 개선하면 좋을까?
- 좋았던점 나누기!
# 연습문제 - 상속과 인터페이스
---
## 복습하기
1. 상속, 메소드 오버라이딩
2. super, 디폴트 생성자
3. 인터페이스, 다형성, 그룹화
4. 추상 클래스
## 연습문제
1. 각국 통화 화폐 - https://cloudstudying.kr/challenges/277
2. 쇼핑 장바구니 - https://cloudstudying.kr/challenges/279
3. 성기사와 마검사- https://cloudstudying.kr/challenges/263
## 확인하기
- 추가로 궁금한점?
- 아쉬운 부분이 있다면?
- 어떻게 개선하면 좋을까?
- 좋았던점 나누기!