[Java] 클래스

● CLASS part 1.


(1)특징

1) 묶음 : 변수, 메서드

2) 캡슐화 단위 : 편리, 보안, 최소 단위

3) 설계도

4) 데이터 타입 역할


*. Build 자동화 툴 : ANT


(2) 변수의 종류

1) 선언된 위치에 따라서

- 클래스 : 인스턴스 변수(멤버 변수)

- 메서드 : 변수(지역 변수)


2) 저장되는 내용에 따라서

- 값 : 변수(기본 데이터 타입)

- 주소 : 참조 변수(객체 데이터 타입)


(3) 메서드(함수)

1) 동작(기능)을 구현

2) 만드는 방법

리턴타입 메서드명(...){

기능 구현

}

3) 사용방법

메서드명(...)

4) 호출 방식

- 인자가 없는방식

- 인자가 있는 방식

- 리턴값(반환값)이 있는 방식

5) return

- 값을 반환(반드시 1개만 가능)


(4) 메서드의 오버로딩(overloading) : 중복 정의

1) 다형성을 지원

2) 매개변수 갯수, 형식, 순서


(5) 생성자(Constructor)

1) 인스턴스를 생성

2) 호출 시점 : 인스턴스를 생성할 때(new를 사용할 때), 단 한번만 호출 가능

3) 초기화 전용

4) 작성 방법

메서드명(. . .){

초기화 기능

}

5) 클래스이름과 동일하게 메서드명 작성

6) 모든 클래스는 기본생성다(default cnstructor)를 가진다  <매개변수 없는 생성자>

만약에 다른 생성자를 만들 경우 더 이상 기본 생성자는 제공되지 않는다.


(6) Garbage Collection

- JVM

- System.gc()

- finalize()  - 가비지가 사라지기 직전에 호출되는 메소드

: 외형만 준비( 원하는 내용으로 고쳐서 사용)

: callback 메서드


(7) this

1) 현재 실행중인 인스턴스의 주소를 저장

2) 참조 변수

3) read only

4) this()



● CLASS part2

(1) 접근 제어 명시자(Access Modifier)

1) 종류

- default(생략)  -> 생략이 되어있다는 것은 접근할 수 있다는 것이다, 접근허가

- public -> 접근허가

- private -> 메소드가 같이 동반해야한다.

- protected

2) Setter메서드, Getter메서드


(2) 메서드

1) 인자 전달 방식

- 값에 의한 전달(call by value)

a. 소량의 데이터

b. 잠깐 사용할 데이터

- 주소(참조)에 의한 전달(call by reference)

a. 대량의 데이터

b. 오랫동안 사용할 데이터


(3) 데이터 저장 방법

1) 변수

- 값을 1개만 저장


2) 배열

- 같은 데이터타입만 사용

- 크기

- 삽입/삭제

3) 클래스

- 서로 다른 데이터를 묶을 수 있다.


(4) 재귀 호출(Recursive Call)


(5) static

1) 인스턴스와 상관없이 별도의 메모리로 생성

2) 여러 인스턴스들이 공유할 수 있는 메모리

3) this가 없다.

4) 클래스 변수  // 메서드에서는 선언할수 없고 클래스 안에서만 선언할 수 있다.

5) static block

static변수만을 모아서 초기화

static int i;

static double d;

static{

i = 10;

d = 3.14;

}


(6) 중첩 클래스

1) 일반 클래스

2) static 클래스


**. Singleton Pattern : 인스턴스를 단 한개만 쓸수있게 해주는 패턴 

- 재료 : 생성자, static, private

- 방법 : 외부에서 절대로 인스턴스를 생성할 수 없게 한다.

내부에서 단 하나의 인스턴스를 생성한다.

그렇게 만들어진 인스턴스를 외부에서 사용할 수 있게 한다.



● CLASS part3(Inheritance)

(1) 상속 제외

1) 생성자

2) private


(2) 부모의 생성자를 호출할수 있다.

super()

super.변수, super.메서드()


this()

this.변수, this.메서드()


반드시 생성자 안에서만 호출 가능

반드시 첫줄에서 호출


(3) 생성자의 호출 순서

(4) 상속은 확장의 개념이다.


(5) 상속은 단일 상속만 지원한다.


(6) 부모클래스와 자식클래싀의 참조 관계

부모가 자식의 주소를 참조할수 있다.

A a;

B b;

C c;


b = new B();

c = new C();


a = new B();

a = new C();

...

B b1 = (B)a;     //부모가 자식의 주소를 가지고 있을때 자식이 부모에게 주소를 한번 넘겨줄 수 있다

----------------------------------

B b1 = new B();

C c1 = new C();

B b2 = new B();

B b3 = new B();

C c2 = new C();


A [ ] a = {b1, c1, b2, b3, c2, new B(), new C()};


(7) 메서드이 오버라이딩(Overriding) : 재정의

-> 부모로부터 물려받은 메서드를 계속 고쳐서 사용하는 것

1) 다형성 지원

2) 상속에서만 사용 가능


(8) 추상클래스, 추상메서드

1) 추상 메서드

- 내용은 없고 선언만 되어있는 메서드

void a(){

}


abstract void a(); // 이런식으로 명시만 해주면 자식 클래스가 가져다가 오버라이딩 하려고 만드는것

// 반드시 오버라이딩을 해야 한다.

// 반드시 abstract 키워드 사용


2) 추상 클래스

- 추상메서드를 1개 이상 가지고 있는 경우

- abstract 키워드 사용

abstract class 클래스명{

}

- 인스턴스를 생성할 수 없다.


(9) final <상수, literal, constant>  // 절대로 변하지 않는 값을 설정하기 위해, 가독성

1) 변수, 메서드, 클래스

-------------------------------

final int i = 10;

i = 5;(에러)

...


final int MAX_AGE = 100;


for(int i=0; i<MAX_AGE; i++){    // 상수는 대문자로 표현한다.

...

}

--------------------------------

final void 메서드명(){   // 오버라이딩 금지

...

}

--------------------------------

final class 클래스명{    // 상속할 필요 없을 때.. 자식클래스를 만들지 않겠다 ( 상속 금지 )

...

}


(10) object 클래스    // 모든 자식 참조



'BACKEND > Java' 카테고리의 다른 글

[Java] Package  (0) 2017.10.25
[Java] 알고리즘 - 정렬 예제  (0) 2017.10.20
[Java] 참조 타입  (0) 2017.10.16
[Java] 반복문  (0) 2017.10.16
[Java] 조건문 예제  (0) 2017.10.13

댓글

Designed by JB FACTORY