본문 바로가기

Java 기본 문법 - 참조 서적 [이것이 자바다 - 한빛미디어]

(54)
2. Java 자바 - 메소드 재정의 @Overrride, final 클래스, final 메소드 부모 클래스의 모든 메소드가 자식 클래스가 사용하기 적합하지 않는 경우가 있다. 이때 상속된 일부 메소드는 자식 클래스에서 다시 수정해서 사용한다. (메소드 오버라이딩) 메소드 재정의 (@Override) 상속된 메소드 내용이 자식 클래스에 맞지 않을 경우 자식 클래스에서 동일한 메소드를 재정의한다. 메소드가 오버라이딩되었다면, 부모 객체의 메소드는 숨겨지기 때문에 자식 객체에서 메소드를 호출하면 오버라이딩된 자식 메소드가 호출된다. 메소드 오버라이딩 시 주의할 점 - 부모 메소드와 동일한 시그니처(리턴 타입, 메소드 이름, 매개 변수 리스트)를 가져야 한다. - 접근 제한을 더 강하게 다시 설정하여 오버라이딩 할 수 없다. ( public < default < protected < private ) -..
1. Java 자바 - 상속 inheritance 상속(inheritance) : 부모가 자식에게 물려줌, 자식은 상속으로 부모가 물려준 것을 자연스럽게 이용할 수 있다. 객체 지향 프로그래밍에서도 부모 클래스의 멤버를 자식 클래스에게 물려줄 수 있다. 부모 클래스(상위 클래스), 자식 클래스(하위 클래스, 파생 클래스) 상속은 이미 잘 개발된 클래스를 재사용해서 새로운 클래스를 만든다. 따라서 코드의 중복을 줄여준다. field1, field2, method1( ), method2( ) 를 가진 클래스가 있다면 모두 처음부터 작성하는 것보다 field1, method1( ) 을 가지고 있는 클래스가 있다면, 이 클래스를 상속하고 field2, method2( ) 만 추가하면 효율적이고 개발 시간을 절약시켜준다. 실제로 B 클래스를 객체 생성해서 아래와..
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, . . . ) { . . . } 정적 필드와 정적 메소드는 클래스에 고정된 멤버이기 때문에, 클래스 로더가 클래..