티스토리 뷰
접근 제어(Access Control)
예를 들어 전역변수를 선언해 뒀는데 수정이 될 경우 이 변수를 사용한 모든 함수가 수정되어야 할 것이다. 그렇게 되면 상당히 번거롭고 그 과정에서 오류를 범하기 쉬울 것이다. 이 문제의 근본적 원인은 데이터 관련 함수들이 서로 떨어져 있기 때문이다. 그러므로 데이터를 관리 할 때 메소드들을 한 곳에 모아 관련있는 메소드들만 이 데이터를 사용하게 하는 것이다.
캡슐화(Encapsulation)도 접근제어를 적용한 것 중 하나이다. 객체지향언어에서 클래스에 관련된 멤버변수들과 메소드들을 모아놓고 관련있는 메소드들만 접근하여 사용하는 것이 캡슐화이며 접근 제어이다.
가시성 조정자(Visibility Controller)
가시성 조정자는 클래스 또는 메소드, 멤버변수들의 접근 범위를 정해주는 키워드이다.
public | 어느 곳에서나 접근이 가능함 (다른 패키지에서도) |
private | 클래스 내부에서만 접근이 가능함 |
protected | 같은 패키지에서만 접근이 가능하고 다른 패키지에서는 상속을 받았을 때만 접근이 가능함 |
없음(package) | 따로 가시성 지정자를 정해주지 않았을 때 적용 되는 것으로, 같은 패키지에서만 접근 가능하고 다른 패키지에서는 접근이 불가능함 |
메소드 설계
메소드를 설계 할 때 중요한 것이 두가지가 있는데, 하나는 메소드가 받을 데이터와 출력할 데이터를 정하는 것이고, 다른 하나는 어떻게 출력데이터를 만드는 가이다. 전자는 메소드 시그니처(signature)라고 하고, 후자는 알고리즘(algorithm)이라고 한다.
상속과 다형성
우리는 프로그래밍을 할 때 단순히 프로그램을 한 번 만들고 끝나는 것만이 아니라, 내가 만든 혹은 다른 사람이 만든 코드를 수정하거나 삭제해야 할 때가 있다. 상속은 프로그램의 내용이 변경 되었을 때 코드를 수정 할 때 중요한 역할을 한다. 프로그램의 내용이 확장 되었을 때, 특히 중요한 역할을 하는데, 이미 만들어진 클래스를 확장하는 형태로 코드를 작성할 수 있기 때문이다.
프로그램의 내용이 변했을 때 단순히 기존의 코드를 직접 수정해서 요구사항을 충족할 수도 있다. 하지만 이 방법은 코드 중복이라는 문제를 일으킨다. 생각해보면 같은 내용의 코드를 두번 이상 중복해서 작성한다는 것은 정말 데이터 낭비이다.
그러므로 자바에 정의되어 있는 상속 기능을 사용하여 하위 클래스를 정의하면 기존에 작성해 둔 상위 클래스의 내용을 그대로 사용할 수 있다. 그렇게 하면 코드중복도 피하고 수정사항을 적용하기도 쉬워진다. 또한 상속을 이용하면 다형성도 따라온다. 다형성(Polymorphism)이란 여러 타입을 다룰 수 있는 특성이라는 뜻이다.
추상 클래스(Abstract Class)
추상 클래스란 구체적인 객체를 생성하는 여러 클래스들을 묶기 위해 만들어진 클래스이다. 추상 클래스는 객체를 생성할 수 없고, abstract란 키워드를 사용하여 정의한다. 추상클래스와 비교하여 객체를 만들 수 있는 클래스들을 구상 클래스(concrete class)라고 한다.
파이널 클래스(Final Class)
파이널 클래스는 더 이상 하위로 확장(extends) 할 수 없는 클래스로, final 키워드를 사용하여 정의한다. 파이널 클래스로 선언하면 그 클래스는 더 이상 슈퍼 클래스가 될 수 없다. 참고로 Wrapper 클래스도 파인널 클래스로 더 이상 확장 할 수 없다.
- Total
- Today
- Yesterday
- 클래스
- 튜플
- sys
- 딕셔너리
- DateTime
- 네이버
- 고급 파이썬
- Break
- ImageStitching
- random
- Machine Learning
- HACKDAY
- ML
- stitcher
- 변수
- Math
- 머신러닝
- 리스트
- python
- 핵데이
- 디폴트 파라미터
- Else
- 모듈
- 파이썬
- 삼항연산자
- 파이선
- list
- import
- continue
- 네이버 인턴
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |