티스토리 뷰
프로그래밍/자바
[자바의 정석] Ch 7-17 제어자(modifier)란? static이란? final이란? abstract란? Ch 7-21 접근 제어자(access modifier)란? Ch 7-22 캡슐화란?
da_devel 2022. 6. 21. 03:55반응형
🤔 제어자(modifier)란?
✔ 클랫와 클래스의 멤버(멤버 변수, 메서드)에 부가적인 의미 부여
🤔 static이란?
🤔 final이란?
🤔 abstract 란?
추상의, 미완성의
✅ 추상메서드란?
✔ 몸통이 없는 메서드
✔ 미완성 메서드
✔ 선언부만 있고, 구현부는 없다.
✔ abstract 키워드가 붙는다.
✅ 추상클래스란?
✔ 추상 메서드를 갖고 있는 클래스
추상클래스의 인스턴스 생성불가 ❌
abstract class AbstractTest { // 추상클래스 (추상메서드를 포함한 클래스)
abstract void move(); // 추상 메서드(구현부가 없는 메서드)
}
AbstractTest a = new AbstractTest(); // 에러!! 추상 클래스의 인스턴스 생성불가
추상클래스는 상속받아서 완전한 클래스를 만든 후에 객체 생성이 가능하다 ❗❗
🤔 접근 제어자(access modifier)란?
🤔 접근 제어자를 사용하는 이유?
✔ 외부로부터 데이터를 보호하기 위해서
✔ 외부에는 불필요한, 내부적으로만 사용되는, 부분을 감추기 위해서
다음의 예제를 보자.
class Time {
int hour;
int minute;
int second;
}
public class T2 {
public static void main(String[] args) {
Time t = new Time();
t.hour = 100;
System.out.println(t.hour); // 출력결과 : 100
}
}
시간이라는 객체를 생성하고
hour에 100이라는 값을 넣으면 어떻게 될까?
당연히 문제 없이 100이라는 값이 들어간다.
하지만 시간은 0~24까지의 범위만 유효하기 때문에 다음과 같이 수정해야 한다.
class Time {
private int hour; // 0~23 사이의 값을 가져야 함.
private int minute;
private int second;
public void setHour(int hour) {
if(hour < 0 || hour > 23) return;
this.hour = hour;
}
public int getHour() { return hour; };
}
public class T2 {
public static void main(String[] args) {
Time t = new Time();
// t.hour = 100;
t.setHour(21); // hour의 값을 21로 변경
System.out.println(t.getHour()); // 출력결과 : 21
t.setHour(100);
System.out.println(t.getHour()); // 출력결과 : 21
}
}
변수를 private로 변경하고
setHour, getHour() 함수를 만들어
hour 값을 변경한다.
조금 더 코드를 다음으면 다음과 같이 작성하면 된다.
class Time {
private int hour; // 0~23 사이의 값을 가져야 함.
private int minute;
private int second;
public void setHour(int hour) {
if(isValidHour(hour)) return;
this.hour = hour;
}
// 매개변수로 넘겨진 hour가 유효한지 확인해서 알려주는 메서드
private boolean isValidHour(int hour) {
return hour < 0 || hour > 23;
}
public int getHour() { return hour; };
}
public class T2 {
public static void main(String[] args) {
Time t = new Time();
// t.hour = 100;
t.setHour(21); // hour의 값을 21로 변경
System.out.println(t.getHour());
t.setHour(100);
System.out.println(t.getHour());
}
}
객체지향에 대해 확실히 배우고 나니
점점 코드를 체계적으로(객체지향적으로) 짜는 법을
알게 되어 뿌듯하다!!
그럼 오늘도 열공하자. 🔥
다음 포스팅에선
객체지향의 핵심인
'다형성'에 대해 공부하자.
반응형
'프로그래밍 > 자바' 카테고리의 다른 글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 정보처리 산업기사
- 22 정보처리산업기사
- 강의
- Java
- 챌린지
- 디버깅
- 정보처리산업기사 공부법
- 백준
- 정보처리산업기사
- 자바의 정석
- 22 정보처리 산업기사
- queue
- stack
- hackerrank
- challenges
- ORM
- 자바
- 해커랭크
- hackerrank challenges
- 개발자
- BAEKJOON
- 소스코드
- 그리디
- 해커랭크 자바
- LinkedList
- 해커랭크 챌린지
- 코드
- JPA
- 풀이
- 해커랭크 자바 챌린지
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함