티스토리 뷰

컴퓨터공학/자바

자바 공부 정리 180114

PhireRed2015 2019. 1. 1. 21:35

접근 제어(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
링크
«   2025/07   »
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
글 보관함