2021. 1. 23. 14:45ㆍDev.Program/Java & Spring
지난번 복습
========Ex.java 파일 만들기 (main 체크)
문제 )
자동차(Car) 클래스 정의
- 멤버변수
1) 현재속력(speed, 정수형)
2) 최대속력(maxSpeed, 정수형)
- 메서드
1) 속력 증가 : speedUp()
-파라미터로 증가할 속력(s) 전달, 리턴값 없음
-증가할 속력(s)을 전달받아 현재속력(speed)에 누적 및 현재속력을 출력
단, 누적된 속력이 최대 속력(maxSpeed) 보다 클 경우
현재 속력(speed)을 최대 속력(maxSpeed)으로 고정 후 "최대 속력 도달!" 출력
2) 속력 감소 : speedDown()
-파라미터로 감소할 속력(s) 전달, 리턴값 없음
-증가할 속력(s)을 전달받아 현재속력(speed)에서 차감 및 현재속력을 출력
단, 차감된 속력이 0 보다 작을 경우
현재 속력(speed)을 0 으로 고정 후 "차량 정지!" 출력
푼 답 ) 맨 밑에 main class 바깥에 적어주기
확인 해보기 )
선생님 답안 ) 더 간단해짐!
< 변수 선언 위치에 따른 분류 >
교재 p.180-181
1. 멤버변수 : 클래스 내부, 메서드 외부에 선언된 변수. 클래스 내에서 접근 가능
- 인스턴스 멤버 변수 : static 키워드가 없는 멤버변수
- 클래스 멤버 변수 : static 키워드가 있는 멤버변수
- ⇒ 멤버 변수는 사용 전 초기화를 수행하지 않으면, 자동으로 기본값으로 초기화 됨
2. 로컬변수 : 메서드 내부에 선언된 변수. 해당 메서드 내에서만 접근 가능
- 로컬 변수 : 메서드 내에서 선언된 변수
- 파라미터 변수 : 메서드 선언부 파라미터 부분에서 선언된 변수
- ⇒ 로컬 변수는 반드시 사용 전 초기화 필수!
======== Ex2.java 만들기
int instanceVariable;
static int classVariable; ⇒ 차이! 기울어진 꼴!
- 로컬 변수 선언 전이므로 사용 불가
- localVariable2는 선언 후 초기화를 안했기 때문에 사용 불가
- for문 종료 후 로컬변수 i는 제거되므로 접근 불가
- 존재하지 않는 변수이므로 접근 불가
- 인스턴스 변수 접근 가능
p.190-191 & p243(접근제한자)
< 접근제한자(= 접근제어자, Access Modifier) >
- 클래스, 메서드, 멤버변수 등에 접근을 제어하는 키워드
- public, protected, default(= package), private 4가지
1. public : 누구나 접근 가능하도록 지정(모든 클래스에서 접근 가능)
- 주로 멤버변수에 접근하여 데이터를 대신 입출력 하는 기능의 메서드에 사용
= Getter/Setter 메서드
1) Getter : 멤버변수의 값을 외부로 리턴하는 역할(파라미터 X, 리턴값 O)
일반적으로 getXXX() 형태의 이름을 사용(XXX : 멤버변수명)
2) Setter : 외부로부터 값을 전달받아 멤버변수에 저장하는 역할
(파라미터 O, 리턴값 X)
일반적으로 setXXX() 형태의 이름을 사용(XXX : 멤버변수명)
⇒ Getter/Setter 자동 생성 단축키 : Alt + Shift + S → R (p.251)
2. private : 자신의 클래스 내에서만 접근 가능(다른 클래스에서 접근 불가)
- 주로 멤버변수의 접근을 외부로부터 차단하기 위해 사용
⇒ 이처럼 멤버변수에 private 접근제한자를 사용하여 외부 접근을 차단하고
별도의 Getter/Setter 메서드를 public 으로 제공하여
간접적인 데이터 입출력을 허용하는 것을 Encapsulation(캡슐화, 은닉) 라고 함
(데이터 보호를 위해 Getter/Setter 내에서 부가적인 확인 작업도 가능)
======== Ex3.java 만들기
- private : Student2 클래스 내에서만 접근 가능(다른 클래스에서 접근 불가)
- score 오류 남!!
- 오류 문장 잘 보기
- The field Student2.score is not visible
- not visible!!! 보이지 않는다 (score는 private 접근제한자로 지정되어 있기 때문)
- score는 안보임!!!( private 접근제한자로 지정되어 있기 때문 )
- Getter/Setter 하는 일 잘보기!
- getScore() 와 setScore() 메서드를 불러낼 수 있다!
- 이제 출력값이 잘 나옴.
======== Test3.java 새 문서 만들기
문제 )
은행계좌(Account3) 클래스 정의
1. 멤버변수
- 계좌번호(acccountNo, 문자열)
- 예금주명(ownerName, 문자열)
- 현재잔고(balance, 정수)
- 풀이 )
> 이제 전부 private로 바꿈
- 그럼 위에 전부 오류 뜸!
⇒ 값을 저장하기 위해 멤버변수에 직접 접근이 불가능하므로 Setter 메서드 사용
⇒ 값을 출력하기 위해 멤버변수에 직접 접근이 불가능하므로 Getter 메서드 사용
- Getter / Setter 설정
- 출력!
> 잔고를 설정- 한다는 건 좀 이상하다
그래서 setBalance는 지우고 입금/출금으로 설정
- a.deposit(2100000000);
교재 p.247-251
- Getter / Setter 자동완성 단축키
- Alt + Shift + S → R (Gerate ⇒ r에 밑줄 쳐져 있는거 : 단축키)
- 자동으로 만들어줌!
- 삽입 위치 지정
- 정렬
- 메서드들의 접근 제한자(이건 손 안댐)
문제 )
Test.java 문서에서
Account4 클래스 정의
멤버변수 3개에 대한 Getter/Setter 자동생성
======== Test4.java 새 문서 만들기
문제 ) Student1 클래스 정의하시오. (전부 private로 만들고 Getter/Setter 만들기)
- getter / setter 는 자동완성 (alt + shift + s + r)
- 출력
> 문제 추가 )
- 메서드명 getTotal
기능 : 국어, 영어, 수학 점수를 모두 더해서 반환
반환 타입 : int
매개변수 : 없음
- 메서드명 getAverage
기능 : 총점(국어, 영어, 수학 점수)를 과목수로 나눈 평균을 구해서 반환
- 소수점 둘째자리에서 반올림할 것
반환 타입 : float
매개변수 : 없음
푼 답 ) 소수점은 안함
선생님 답안 ) 계산은 지금은 중요한게 아니라서 그냥 넘어감.
'Dev.Program > Java & Spring' 카테고리의 다른 글
[Java] 생성자(Constructor) (0) | 2021.01.23 |
---|---|
[Java] 오버로딩 / 가변인자 (0) | 2021.01.23 |
[Java] 클래스의 객체 / 인스턴스화 (0) | 2021.01.19 |
[Java] 메서드(Method) (0) | 2021.01.19 |
[Java] 2차원배열 (0) | 2021.01.19 |