Cute Running Puppy
반응형

Language/[Java] 자바 완전 정복 16

6주차_16. 제네릭

제네릭 클래스와 제네릭 인터페이스 제네릭 오버로딩의 비효율성을 해결하는 문법 제네릭의 문법 제네릭 클래스와 제네릭 인터페이스 정의하기 1. 제네릭 타입 변수명이 1개일 때 접근_지정자 class 클래스명 { ... } 접근_지정자 interface 클래스명 { ... } 2. 제네릭 타입 변수명이 2개일 때 접근_지정자 class 클래스명 { ... } 접근_지정자 interface 클래스명 { ... } 제네릭 클래스는 객체를 생성하는 시점에 타입을 지정함 (클래스를 정의하는 시점에 타입을 지정하는 것 X) public class Myclass { private T t; public T get(); { return t; } public void set(T t) { this.t = t; } } publi..

5주차_15.쓰레드

쓰레드의 생성 및 실행 1. Thread 클래스를 상속받아 run() 메서드를 오버 라이딩 하기 2. Runnable 인터페이스를 구현한 Runnable 객체를 생성 -> Thread 객체를 생성할 대 Runnable 객체를 생성자로 전달 스레드 생성 및 실행 방법 1. Thread 클래스를 상속받아 run() 메서드 재정의 start() = 새로운 스레드 생성, 추가하기 위한 모든 춘비 + 새로운 스레드 위에 run() 실행 2. Runnable 인터페이스 구현 객체를 생성한 후 thread 생성자로 Runnable 객체 전달 1. Runnable 인터페이스를 구현한 클래스 정의 2. 앞서 정의한 클래스를 이용해서 Runnable 객체 생성 3. Thread 객체의 start()를 호출해서 스레드 실행..

5주차_14.예외처리

예외 예외와 에러의 차이점 예외 에러 상황에 따라 개발자가 해결할 수 있는 오류 개발자가 해결할 수 없는 오류 오류가 발생했을 때 차선책을 선택할 수 있는 것 자바 가상 머신 자체에서 발생하는 오류 0으로 나누는 것은 피할 수 있다 메모리가 꽉 차거나 쓰레드가 죽는 것은 피할 수 없다 예외 클래스의 상속 구조 일반 예외 실행 예외 Exception 클래스에서 직접 상속 RuntimeException 클래스를 상속 컴파일 전에 예외 발생 문법을 검사 실행 할 때 발생하는 예외 예외 처리 안하면 문법 오류 예외처리 안해도 문법 오류 안남 일반 예외 클래스 예외 처리를 하지 않으면 문법 오류 발생 interruptedException Thread.sleep(시간) 일정 시간 동안 해당 쓰래드를 일시 정지 상태..

5주차_13.이너 클래스와 이너 인터페이스

이너 클래스 1. 인스턴스 멤버 이너 클래스 객체 내부에 멤버의 형태로 존재하는 클래스 아우터 클래스의 모든 접근 지정자의 멤버에 접근 가능 이너 클래스는 독집적으로 사용될 수 없고, 반드시 아우터 클래스를 사용해야 사용할 수 있다. 인스턴스 이너 클래스 객체 생성하기 아우터 클래스의 객체 생성 -> 아우터 클래스의 객체 참조 변수를 이용 -> 객체 내부에 있는 이너 클래스의 생성자 호출 cf) 인스턴스 필드, 메서드를 사용하기 위해 클래스의 객체를 먼저 생성하는 것과 같은 원리 인스턴스 멤버 이너 클래스의 객체 생성 방법 아우터_클래스 아우터_클래스_참조_변수 = new 아우터_클래스 (); 아우터_클래스.이너_클래스 이너_클래스_참조_변수 = 아우터_클래스_참조_변수.new 이너_클래스(); clas..

4주차_12. 추상 클래스와 인터페이스

추상 클래스 추상 클래스의 정의 메서드 본체가 완성되지 않은 미완성 메서드 - 메서드의 기능을 정의하는 중괄호 부분이 비어있다. - 중괄호가 없기 때문에 세미콜론으로 끝나야 한다. abstract 리턴_타입 메서드명(입력_매개변수); 추상 메서드를 1개 이상 포함하고 있는 클래스는 반드시 추상 클래스로 정의되어야 한다. abstract class 클래스명 { //추상 메서드가 1개 이상 포함되어 있으면 된다. 없어도 된다. } // 미완성 메서드 abstract abc(); // 완성 메서드 void abc () { } 추상 클래스의 특징 추상 클래스는 내부의 미완성 메서드 때문에 객체를 직접 생성할 수 없다. (A a = new A(); 불가) 추상 클래스를 상속한 자식 클래스를 생성하면 그 자식 클래..

4주차_11. 자바 제어자 2

final 제어자 final 변수 final 제어자는 변수를 선언할 때만 지정할 수 있다. 한 번 대입된 값을 수정할 수 없다. // 사용 예시 final int a = 1; // 수정 불가 final 메서드와 final 클래스 final 메서드: 메서드의 기능을 변경할 수 없는 메서드 메서드를 final로 정의하면 자식 클래스에서 해당 메서드를 오버 라이딩할 수 없다. 즉, final 클래스는 상속 받을 수 없다. abstract 제어자 abstract 메서드 == 추상 메서드 abstract 클래스 == 추상 클래스 => 추상 메서드 == 중괄호가 없는 메서드 - 기능 자체가 정의되어 있지 않다 (미완성 메서드) abstract 리턴_타입 메서드명 (); 주의! 추상 메서드를 1개 이상 포함하고 있는..

4주차_10. 클래스의 상속과 다형성

클래스의 상속의 개념과 문법적 특징 상속 다른 클래스의 멤버를 이어받는 기능 상속의 장점 1. 코드의 중복성 제거 2. 클래스의 다형적 표현이 가능 (다형성: 하나의 객체를 여러 가지 모양으로 표현할 수 있는 특성) 상속 문법 class 자식_클래스 extends 부모_클래스 { ... } 자바에서는 다중 상속은 불가능하다 (부모 클래스를 2개 이상 상속받는 것) -> 다중 상속을 허용한다면 모호성이 발생할 수 있기 때문 (상속 받는 클래스 안의 내용이 겹칠 때) 부모 클래스를 상속 받는 자식 클래스는 여러 개가 와도 된다. 생성자의 상속 여부 상속을 수행하면 부모의 모든 멤버를 내려 받는다. 여기서 멤버는 생성자를 제외한 필드, 메서드, 이너 클래스를 말한다. 생성자는 절대로 상속되어서는 안된다. (클..

3주차_09. 자바 제어자1

접근 지정자 접근 지정자는 자바 제어자의 한 종류로, 클래스, 멤버, 생성자 앞에서 사용 범위를 정의하는 역할을 한다. 멤버 및 생성자의 접근 지정자 멤버, 생성자에 사용 가능한 접근 지정자 public, protected, default (package), private 접근 지정자는 필드나 메서드, 생성자 앞에 위치한다. 아무것도 작성하지 않으면 default 접근 지정자가 자동으로 설정된다. public > protected > default > private 순으로 접근 범위가 넓다. private 자신의 클래스 내부에서만 사용할 수 있는 접근 지정자 같은 멤버 끼리만 사용할 수 있으며, 외부 클래스에서는 사용할 수 없다. default 같은 패키지 안의 모든 클래스에서 사용할 수 있는 접근 지정..

3주차_08. 클래스 외부 구성 요소

패키지와 임포트 패키지 비슷한 목적으로 생성된 클래스 파일들을 한 곳에 모아둔 폴더 클래스명의 충돌을 방지하는 역할도 함 임포트 다른 패키지 내의 클래스를 사용하기 위한 문법 요소 다른 패키지의 클래스 사용방법 1. 클래스의 풀네임 사용 패키지명.클래스명 자신이 속해 있는 패키지 내의 클래스를 사용할 때에는 클래스명만 입력해도 된다. 2. 임포트 사용 import 패키지명.클래스명 한 번 패키지를 import 하면 이후에 클래스명만 사용해서 다른 패키지의 클래스를 사용할 수 있다. 외부 클래스 public 클래스의 외부에 추가로 정의한 클래스 1개의 자바 소스 파일에는 최대 1개의 public 클래스만 존재할 수 있다. 또한 그 클래스 명은 파일명과 일치해야 한다. 즉, 1개의 소스파일에서 public ..

3주차_07. 클래스 내부 구성 요소

필드 클래스에 선언된 변수 필드와 지역 변수 객체의 속성 값을 지정할 수 있는 변수 cf) 지역변수: 메소드에 포함된 변수 필드 지역 변수 선언 위치 클래스 중괄호 안 메서드 중괄호 안 생성되는 메모리 위치 힙 메모리의 객체 재부 스택 메모리 초기화 초기화 하지 않아도 강제 초기화 직접 초기화 필수 Class APPLE { int a = 3 // 필드 void eat() { int b = 4; // 지역 변수 } } 메서드 클래스의 기능 자바_제어자 리턴_타입 메서드명(입력매개변수) { 메서드 내용; } public static int sum (int a, int b) { return a + b; } 여러 리턴 타입의 메서드 //리턴타입: void, 입력매개변수: 없음 void print() { Syst..