본문 바로가기

JAVA_이클립스

JAVA - Inner 클래스 / 익명클래스/ Thread

Inner클래스(내부 클래스)

● 클래스 안에 또 다른 클래스 정의

● 클래스에 다른 클래스를 선언하는 이유는 두 클래스간 긴밀한 관계때문이다.

 

내부 클래스 장점

● 내부 클래스에서 외부 클래스의 멤버의 쉽게 접근할 수 있음

● 서로 관련 있는 클래스를 논리적으로 묶어 표현했기 때문에 코드의 캡슐화 증가

● 외부에서 접근이 어렵기 때문에, 코드의 복잡성 ↓

 

myutil 클래스

* String name 으로 선언된 MyUtil은 HelloPrinter에서만 사용가능

* String staticName으로 선언된 staticName은 HelloPrinter와 Calculator에서 모두 사용 가능함

* staticName은 static으로 선언되서 모두 사용이 가능

* MyUtil의 경우 static을 쓰지 않아 myutil클래스를 생성했을 때 선언한 HelloPrinter만 사용 가능함.

(Calculator클래스는 소속만 같고 엄연히 분리되어 있는 클래스라고 보면 됨)

myutil클래스 임포트

위와 같이 클래스 안에 또다른 클래스를 선언할 수 있으며, 이를 임포트 하여 객체 생성하여 출력까지 가능

 

 

 

익명클래스 

● 클래스 선언과 객체생성을 동시에 하는 이름없는 클래스

● 단 하나의 객체만을 생성하는 일회용 클래스

● 생성자 선언 못함

● 단 하나의 클래스나 단 하나의 인터페이스를 상속받거나 구현할 때 사용함

위의 예시는 Weapon이라는 인터페이스를 통해 구현한 익명클래스임.

이름이 없으며, 둘은 하나로 컴파일되지 않고 각각 컴파일 됨.

 

Thread

● 스레드는 프로그램 내에서 실행되는 프로그램 제어 흐름(실행 단위)

하나의 프로세스 내부에서 독립적으로 실행되는 하나의 작업단위

● 프로세스 내의 명령어 블록으로 시작점과 종료점을 가짐

병렬 프로그래밍

비동기 프로그래밍

● Thread 클래스로부터 제공되는 run()메소드 오버라이딩 해서 사용

 

새로운 스레드(Thread)시작시키는 방법

1. Thread 객체를 생성할 수 있는 클래스 정의

2. 정의한 클래스를 이용해서 객체 생성

3. 생성된 객체의 start()메소드를 호출한다. (run 메소드 호출아님)

 

* 저기 있는 sleep은 thread 함수 중 하나로 일시정지를 구현함(try catch 안에 적어주어야 함)

'JAVA_이클립스' 카테고리의 다른 글

JAVA - StringTokenizer 클래스  (0) 2023.02.18
JAVA - String Buffer/String Builder/String 클래스  (0) 2023.02.18
JAVA - VO/DTO  (0) 2023.02.09
JAVA - Exception / throw/ throws  (0) 2023.02.09
JAVA - 접근제어자  (0) 2023.02.09