Java/객체지향 65

[객체지향][쓰레드/thread] - 쓰레드구현과 실행

https://youtu.be/P1zDndoy4pI?list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp 📖본 포스팅은 '자바의 정석 - 남궁성 저자' 님의 책과 유튜브 강의를 보고 작성되었습니다. [쓰레드의 구현과 실행] Thread 클래스를 상속 자바는 단일 상속만 허용하기에 인터페이스로 구현하는 것이 낫다. Runnable 인터페이스를 구현 [쓰레드를 구현하는 방법 2가지를 이용한 쓰레드 구현] package javajungsuk; public class Java13_1 { public static void main(String[] args) { ThreadEx1_1 t1 = new ThreadEx1_1(); Runnable r = new ThreadEx1_2(); Thread t..

Java/객체지향 2022.02.26

[객체지향][쓰레드/thread] - 쓰레드

https://youtu.be/kNNHaAaFDs8?list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp 📖본 포스팅은 '자바의 정석 - 남궁성 저자' 님의 책과 유튜브 강의를 보고 작성되었습니다. [프로세스와 쓰레드 (process & thread)] 프로세스: 실생 중인 프로그램, 자원(resources)과 쓰레드로 구성된다. 쓰레드: 프로세스 내에서 실제 작업을 수행하는 것을 의미한다. 모든 프로세스는 최소한 하나의 쓰레드를 가지고 있다. 프로세스 : 쓰레드 = 공장 : 일꾼 싱글 쓰레드 프로세드 자원 + 쓰레드 멀티 쓰레드 프로세스 자원 + 쓰레드 + 쓰레드 + .... + 쓰레드 일꾼이 여러명이라 더 효과적으로 작업을 처리할 수 있다. 하나의 프로세스를 생성하는 것보다 하나의 ..

Java/객체지향 2022.02.26

[객체지향][애너테이션/Annotation] - 애너테이션 타입 정의하기, 애너테이션의 요소

https://youtu.be/81U0MyuZQKo?list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp 📖본 포스팅은 '자바의 정석 - 남궁성 저자' 님의 책과 유튜브 강의를 보고 작성되었습니다. [애너테이션 타입 정의하기] 애너테이션을 직접 만들어 쓸 수 있다. @interface 애너테이션 이름{ 타입 요소이름(); } 애너테이션의 메서드는 추상 메서드며, 애너테이션을 적용할 때 지정한다. (순서X) 요소 이름과 값을 같이 적어주기 때문에 어떤 요소에 어떤 값을 지정했는지를 다 알 수 있어서 순서는 상관이 없다. [직접 만들어 본 애너테이션] @interface TestInfo { int count(); String testedBy(); String[] testTools(); Te..

Java/객체지향 2022.02.25

[객체지향][애너테이션/Annotation] - 메타 애너테이션(Meta Annotation)

https://youtu.be/p7KStWk8hWU?list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp 📖본 포스팅은 '자바의 정석 - 남궁성 저자' 님의 책과 유튜브 강의를 보고 작성되었습니다. [메타 애너테이션이란?] 메타 애너테이션은 '애너테이션을 위한 애너테이션' 메타 애너테이션은 java.lang.annotation 패키지에 포함되어 있다. [@Target] 애너테이션을 정의할 때, 적용 대상 지정에 사용한다. [@Retention] 애너테이션이 유지(retention)되는 기간을 지정하는데 사용한다. 컴파일러에 의해 사용되는 애너테이션의 유지 정책은 SOURCE이다. 실행시에 사용 가능한 애너테이션의 정책은 RUNTIME이다. [@Documented, @Inherited] ..

Java/객체지향 2022.02.25

[객체지향][애너테이션/Annotation] - 애너테이션(Annotation)

https://youtu.be/i4V8ZI9Undc?list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp 📖본 포스팅은 '자바의 정석 - 남궁성 저자' 님의 책과 유튜브 강의를 보고 작성되었습니다. [애너테이션이란?] 주석처럼 프로그래밍 언어에 영향을 미치지 않으며, 유용한 정보를 제공하는 것을 의미한다. 특정 프로그램(정보제공, 설정정보)을 위한 것으로 특정 프로그램이 아니라면 영향이 아예 없다.\ 설정 정보를 XML로 공유할 때 많은 사람들이 수정하기가 번거롭기 때문에 본인이 필요한 설정 정보만 애너테이션으로 설정해서 사용하는 것이 바람직하다. [애너테이션의 사용 예시] @Test //애너테이션 public void method() { } @Test 애너테이션은 이 메서드가 단위 테..

Java/객체지향 2022.02.24

[객체지향][열거형] - 열거형에 멤버 추가하기

https://youtu.be/R0WrMaKoLTE?list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp 📖본 포스팅은 '자바의 정석 - 남궁성 저자' 님의 책과 유튜브 강의를 보고 작성되었습니다. [열거형에 멤버 추가하기] 불연속적인 열거형 상수의 경우, 원하는 값을 괄호 안에 적는다. enum Direction {EAST(1), SOUTH(5), WEST(-1), NORTH(10)} 괄호( )를 사용하려면, 인스턴스 변수와 생성자를 새로 추가해줘야 한다. enum Direction{ EAST(1), SOUTH(5), WEST(-1), NORTH(10); private final int value; //정수 저장 필드(인스턴스 변수)를 추가 Direction(int value) { t..

Java/객체지향 2022.02.22

[객체지향][열거형] - 열거형(enum)

https://youtu.be/ODHC-n4mpMY?list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp 📖본 포스팅은 '자바의 정석 - 남궁성 저자' 님의 책과 유튜브 강의를 보고 작성되었습니다. [열거형 enum] 관련된 상수들을 같이 묶어 놓은 것을 의미한다. Java는 타입에 안전한 열거형을 제공한다. C언어와 다르게 값과 타입을 모두 체크해준다. if(Card.CLOVER ==Card.TWO) 값은 같지만 타입이 달라서 컴파일 에러를 내준다. 열거형 상수는 객체이기 때문에 compareTo( )와 equals를 사용해야 한다. 또 예외적으로 ==도 허용된다. [일반적으로 작성한 경우] class Card{ static final int CLOVER = 0; static fina..

Java/객체지향 2022.02.21

[객체지향][제네릭스] - 제네릭 형변환

📖본 포스팅은 '자바의 정석 - 남궁성 저자' 님의 책과 유튜브 강의를 보고 작성되었습니다. https://youtu.be/8Ti7Beaq62A?list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp [제네릭 타입의 형변환] 제네릭 타입과 원시 타입 간의 형변환은 바람직하지 않다. (경고 발생) 와일드 카드가 사용된 제네릭 타입으로는 형변환이 가능하다. [제네릭 타입의 제거] 컴파일러는 제네릭 타입을 제거하고, 필요한 곳에 형변환을 넣는다 1. 제네릭 타입의 경계(bound) 제거 2. 제네릭 타입 제거 후에 타입이 불일치하면, 형변환을 추가 3. 와일드 카드가 포함된 경우, 적잘한 타입으로 형변환 추가

Java/객체지향 2022.02.20

[객체지향][제네릭스] - 제한된 제네릭 클래스, 제네릭스의 제약

📖본 포스팅은 '자바의 정석 - 남궁성 저자' 님의 책과 유튜브 강의를 보고 작성되었습니다. https://youtu.be/3nmfoPeOgoA?list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp [제한된 제네릭 클래스] extends로 대입할 수 있는 타입을 제한 (상속을 이용한 제한) package javajungsuk; import java.util.ArrayList; class Fruit implements Eatable{ public String toString() { return "Fruit"; } } class Apple extends Fruit { public String toString() { return "Apple"; } } class Grape extends Fr..

Java/객체지향 2022.02.16