1. 자바 클래스 설계


1)캡슐화(Encapsulation)

- 堅牢性(けんろうせい)の向上(こうじょう)

- 견뢰성(견고성)의 향상

- 保守性(ほしゅう)の向上

- 유지보수성의 향상


2)상속 継承(けいしょう)-계승

- 受け継ぐ(うけつぐ) - 계승하다

- 필드 状態(じょうたい) 상태

- 메소드 振る舞い(ふるまい) - 행동

- 내부 클래스, 인터페이스

- 열거형

- 클래스의 다중상속은 불가

- 인터페이스의 다중상속은 가능

- 상속에 따라 구성되는 관계는 is-a 관계 또는 kind of a 관계


3)다형성(Polymorphism) ポリモーフィズム

4)메소드 오버라이드, 어노테이션

- java.lang.@Override 

- 슈퍼클래스의 메소드를 오버라이드 하고 있는 것을 컴파일러에 명시한다.

5)toString, hashCode, equals메소드의 오버라이드

java.lang.Object 클래스는 java에 있는 모든 클래스의 암묵적인 슈퍼클래스. 명시적으로 상속받을 필요는 없다.

- java.lang.Object 클래스의 주요한 메소드.

- boolean equals(Object obj) : 오브젝트가 같은지 다른지 표시

- equals 메소드에 따라 같다고 판단되는 2개의 오브잭트는 같은 값을 반환한다.

- hashCode가 같은 값이더라도 equals로 같은 오브젝트가 아닐 수도 있다.

- int hashCode() : 이 오브젝트의 해쉬 코드값을 반환한다.

- String toString() : 이 오브젝트의 문자열표현을 반환한다.

- String 클래스는 내부적으로 equals 메서드를 오버라이딩을 하고 있다.

- 그래서 주소값이 아닌 내용을 비교. equals는 primitive type은 값, reference type 은 객체의 주소를 검사

6)final 키워드

- final 클래스 : 상속불가

- final 변수 : 재대입 불가

- final 메소드 : 오버라이드 불가

- final 과 abstract 같이 사용 : 컴파일 에러(클래스, 메소드)

7)static

- 정적

- instance : 동적

- static 초기화 블록 : 클래스가 로드 될 때 실행된다. 

8)싱글톤, 불변클래스

- 싱글톤 : 클래스의 인스턴스가 2개 이상 생성되지 않는 것을 보증하는 디자인 패턴.

- 인스턴스를 하나만 생성, 항상 하나의 인스턴스를 참조하도록 한다.

- 생성자를 private로 선언한다.

- 자신의 필드에 설정되어있는 인스턴스를 반환한다. public static 메소드를 제공한다.


- 불변 클래스 : 불변 클래스는 해당 클래스에서 생성된 인스턴스에 대해 한번 설정된 상태(필드값) 변경되지 않게 설정된 클래스.

- 대표적 불변 클래스 : java.lang.String, java.lang.Integer, java.math.BigDecimal, java.awt.Color

- Date and Time API -> java.time.LocalDate 등

9)인터페이스, default메소드, static 메소드

- 인터페이스에 추상메소드, default 메소드, static 메소드를 선언 할 수 있다.

- 인터페이스의 static 메소드는 인터페이스형참조를 사용해서 호출 할 수 있다. 인터페이스를 구현하는 클래스참조나 인스턴스 참조로는 불가능하다.

- default 메소드는 인터페이스에서만 선언가능한 추상메소드다.


10)추상클래스, 추상메소드

- 추상클래스 : abstract 를 붙여 선언. 상속받아 이용하는 것이 전제되는 불완전한 클래스

- 추상클래스에서는 인스턴스를 생성하는 것은 불가능하다.

- 추상클래스에는 구상메소드와 추상메소드 둘다 선언하는 것이 가능하다.

- 추상메소드가 하나라도 선언되어 있는 클래스는 명시적으로 abstact를 붙여 줘야 한다.


11)내부클래스, 익명클래스

- static 맴버 클래스 : 객체화 하지않아도 사용가능.

- 맴버 클래스

- 로컬 클래스 : 메소드 안에서 선언 할 수 있다.

- 익명 클래스 : 클래스의 선언과 객체의 생성을 동시에 하기 때문에 한번만 사용될 수 있고 하나의 객체만을 생성하는 일회용 클래스

이점 : private 까지 포함하는 외부 클래스의 모든 맴버에 접근 할 수 있다.

12)열거형

- 관계있는 정수를 하나로 모으기 위한 type

- Enum 클래스형을 기반으로 한 클래스형 선언

- 마지막에 세미콜론 ; 을 붙지지 않아도 상관없음. 하지만 Enum 안에 필드나 메소드를 선언하는 경우에는 필요함.

- 열거형은 암묵적으로 public static final 맴버다.

- 선언 방법 : 필드, 메소드

- name() 호출된 값의 이름을 String으로 반환

- toString() 문자열 반환(오버라이드 제공)

- valueOf(String arg) String 값을 Enum에서 가져온다. 

- ordinal() 해당 값이 몇 번째 있는지 반환한다. 0부터 시작.

- 생성자는 private으로 작성해 주어야 한다. - 클래스 내에서만 객체가 생성 가능

- 미리 정의 된 인스턴스를 반환해야 하므로.





Posted by 왱코
,