본문 바로가기

Java 기본 문법 - 참조 서적 [이것이 자바다 - 한빛미디어]/4. 객체지향 프로그래밍

(12)
12. Java 자바 - 어노테이션 어노테이션(Annotation) = 메타데이터(metadata)라고 볼 수 있다. 메타데이터 : 어플리케이션이 처리할 데이터가 아니라, 컴파일 과정과 실행 과정에서 코드를 어떻게 컴파일하고 처리할 것인지 알려주는 정보 어노테이션 작성 형태 @AnnotationName 어노테이션의 용도 - 컴파일러에게 코드 문법 에러를 체크하도록 정보 제공 - 소프트웨어 개발 툴이 빌드 또는 배치 시 코드를 자동으로 생성할 수 있도록 정보를 제공 - 실행 시(런타임 시) 특정 기능을 실행하도록 정보 제공 @Override 어노테이션 - 컴파일러에게 코드 문법 에러를 체크하도록 정보를 제공한다. - 메소드 선언 시 사용되며, 메소드가 오버라이트(재정의)된 것임을 컴파일러에게 알려주어 컴파일러가 오버라이트 검사를 하도록 한다..
11. Java 자바 - Getter와 Setter 메소드 객체 지향 프로그래밍에서 객체의 데이터는 객체 외부에서 직접적으로 접근하는 것을 막는다. 객체 데이터를 외부에서 읽고 변경 시 객체의 무결성이 깨질 수 있기 때문이다. ex) 자동차 속도는 음수 불가, 하지만 외부에서 음수로 설정하면 객체 무결성이 깨진다. 따라서 객체 지향 프로그래밍에서는 메소드를 통해 데이터를 변경하는 방법을 선호한다. 데이터는 외부에서 접근하지 않도록 막고, 메소드는 공개해서 외부에서 메소드를 통해 데이터에 접근하도록 유도한다. (메소드는 매개값을 검증해서 유효한 값만 데이터로 저장할 수 있기 때문이다.) 이러한 역할을 하는 메소드 Setter! ex) 자동차 속도를 setSpeed( ) 메소드로 변경할 경우 아래와 같이 검증 코드를 작성할 수 있다. void setSpeed(dou..
10. Java 자바 - 접근 제한자 public, protected, default, private main( ) 메소드를 가지지 않는 대부분의 클래스들은 외부 클래스에서 이용할 목적으로 설계된 라이브러리 클래스이다. 라이브러리 클래스를 설계할 때는 외부 클래스에서 접근할 수 있는 멤버와 접근할 수 없는 멤버로 구분해서, 필드, 생성자, 메소드를 설계한다. 1. 접근 제한자의 종류 public, protected, default, private (오른쪽으로 갈 수록 접근 제한이 강화) 접근 제한자 적용 대상 접근 가능 대상 접근 불가 대상 public 클래스, 필드, 생성자, 메소드 모든 대상 없음 protected 필드, 생성자, 메소드 같은 패키지 또는 자식 클래스 자식 클래스가 아닌 다른 패키지에 소속된 클래스 default 클래스, 필드, 생성자, 메소드 같은 패키지에 소속된 클래스 다른 패키지..
9. Java 자바 - 패키지 (package) 패키지 (package) 많은 클래스들을 체계적으로 관리하기 위함이다. 폴더를 만들어서 파일을 저장하듯, 패키지를 만들어서 클래스를 저장 / 관리한다. 패키지의 물리적 형태는 파일 시스템의 폴더이다. 파일 시스템의 폴더 기능만이 아니라 클래스의 일부분이다. - 패키지는 클래스를 유일하게 만들어주는 식별자 역할을 한다. - 클래스의 전체 이름은 "패키지명 + 클래스명" 이다. - 패키지가 상, 하위로 구분되어 있다면 도트 ( . ) 를 사용해서 표현한다. 상위패키지.하위패키지.클래스 ex) Car 클래스가 com.mycompany 패키지에 속해있다면, - Car 클래스의 전체 이름 : "com.mycompany.Car" - 실제 파일 시스템 : com\mycompany\Car.class 패키지가 중요한 이..
8. Java 자바 - final 필드와 상수 final 필드 최종적인 필드 초기값이 저장되면 이것이 최종적인 값이 되어 프로그램 실행 도중 수정할 수 없다. 1. final 필드 선언 final 타입 필드 [= 초기값]; final 필드에 초기값을 줄 수 있는 방법은 딱 2 가지 뿐 - 필드 선언 시에 주는 방법 - 생성자에서 주는 방법 단순 값이라면 필드 선언 시 초기화가 간단하다. 복잡한 초기화 코드가 필요하거나 객체 생성 시 외부 데이터로 초기화해야 한다면, 생성자에서 초기값을 지정해야 한다. 생성자는 final 필드의 최종 초기화를 마쳐야 하므로, 초기화가 되지 않은 final 필드가 남아있으면 컴파일 에러가 발생한다. ex) 주민등록번호는 Person 객체가 생성될 때 부여되므로 초기값을 미리 줄 수 없다. 따라서 생성자의 매개값으로 주민..
7. Java 자바 - 정적 멤버와 static, 싱글톤(singleton) 정적 멤버와 static 정적 (static) : '고정된' , 정적 멤버는 클래스에 고정된 멤버로 객체를 생성하지 않고 사용할 수 있는 필드와 메소드를 말한다. (각각 정적 필드, 정적 메소드라고 부른다.) 정적 멤버는 객체(인스턴스)에 속한 멤버가 아니라 클래스에 소속된 멤버이기 때문에 클래스 맴버이라고도 한다. 1. 정적 멤버 선언 정적 필드, 정적 메소드를 선언하는 방법은 필드와 메소드 선언 시 static 키워드를 추가적으로 붙이면 된다. public class 클래스 { //정적 필드 static 타입 필드 [= 초기값] //정적 메소드 static 리턴타입 메소드( 매개변수선언1, . . . ) { . . . } 정적 필드와 정적 메소드는 클래스에 고정된 멤버이기 때문에, 클래스 로더가 클래..
6. Java 자바 - 인스턴스 멤버와 this 인스턴스 (instance) 멤버 객체(인스턴스) 를 생성한 후 사용할 수 있는 필드와 메소드를 의미한다. (인스턴스 필드, 인스턴스 메소드라고 불린다.) 이전에 작성한 모든 필드와 메소드는 인스턴스 멤버이다. 인스턴스 필드와 메소드는 객체에 소속된 멤버이기 때문에 객체 없이는 사용할 수 없다. ex) Car 클래스에 gas 필드와 setSpeed( ) 메소드가 아래와 같이 선언 public class Car { //필드 int gas; //메소드 void setSpeed(int speed) { . . . } } gas 필드와 setSpeed( ) 메소드는 인스턴스 맴버이기 때문에 외부 클래스에서 사용하기 위해서는 먼저 Car 객체(인스턴스)를 생성하고 참조 변수 myCar, yourCar 로 접근해야 ..
5. Java 자바 - 클래스의 구성 멤버 [ 메소드 ] 메소드 객체의 동작에 해당하는 중괄호 { } 블록을 말한다. 메소드를 호출하게 되면 중괄호 블록에 있는 코드들이 일괄적으로 수행된다. 메소드는 필드를 읽고 수행하는 역할도 하지만, 다른 객체를 생성해서 다양한 기능을 수행하기도 한다. 메소드는 객체 간의 데이터 전달 수단으로 사용된다. 외부로부터 매개값을 받을 수 있고, 실행 후 어떤 값을 반환할 수도 있다. 메소드 선언 선언부(반환타입, 메소드 이름, 매개 변수 선언) 와 실행 블록으로 구성된다. 메소드 선언부를 "메소드 시그니처"라고도 한다. 메소드 선언 형태 - 반환 타입 (return) 메소드가 실행 후 반환하는 값의 타입을 의미한다. (반환값이 있을 수도, 없을 수도 있다.) 메소드가 실행 후 결과를 호출한 곳에 넘겨줄 경우, 반환값이 있어야한다..