Programming Language/Java

Ⅲ. Thread의 생성 및 실행방법 1. Thread 생성방법 및 실행방법 - 생성방법1 : Thread class를 상속받아 run() 메소드 재정의 - 생성방법2 : Runnable interface 구현 (추상메소드(run()) 구현) → Thread 생성자로 Runnable 객체 전달 - 실행방법 : Thread 객체내의 start() 메소드 호출 // Example1 package sample; // Runnable 인터페이스를 상속해 클래스를 만들면, 멀티 스레드 동작 가능 class Task1 implements Runnable {// Runnable는 인터페이스 public void run() {// run() : 실행한다 // 여기에 스레드가 처리할 작업을 넣어주면 됨 } } // Th..
Ⅱ. Multi-Thread의 필요성 1. Multi-Thread의 필요성 - Thread는 동시성(Concurrency)과 병렬성(Parallelism)을 가지고 수행 (시간별로 스레드에 할당하는 시간이 나뉘어 있기 때문) ※ 동시에 실행하는 것 같지만 순차적으로 실행 (CPU가 동시에 둘 이상의 스레드를 돌리진 않음)
Ⅰ. Program vs. Process vs. Thread의 개념 1. Program vs. Process vs. Thread의 개념 - 프로그램 : 실행 가능한 형태의 소프트웨어 - 프로세스 : 실행 중인 프로그램 (변수) - 스레드 : 프로세스의 작업 단위 ※ 자바로 만든 프로그램에서도 스레드가 만들어지고 동작할 수 있음 - Loading을 두번 실행하면 → 멀티 프로세스 (Multi-Process) 2. Process의 구조 3. Java Program상의 Thread
Ⅲ. 예외(Exception) 클래스 사용자 정의 1. 사용자 정의 예외 클래스 작성 및 발생방법 - Exception 상속 : 일반예외(Checked Exception)으로 생성 - RuntimeException 상속 : 실행예외(UnChecked Exception)으로 생성 // Example package sample; class AgeException extends Exception { } public class Main { public static void ticketing(int age) throws AgeException { if(age < 1) { throw new AgeException(); } System.out.println("티켓을 구매해 주셔서 감사합니다"); } public st..
Ⅱ. 예외(Exception)의 전가(throws) 1. 예외의 전가(throws) - 예외 처리를 자신이 호출된 지점으로 전가 (이 경우 예외처리는 전가받은 상위위치에서 처리) → 즉, 예외가 발생하는 지점에서 예외 처리하지 않고, 바깥으로 넘김 - 메소드이름(…) throws 예외클래스 // Example package sample; public class Main { public static void methodA() throws Exception { methodB();// B가 A로 발생 예외를 전가함 } public static void methodB() throws Exception { methodC();// C가 B로 발생 예외를 전가함 } // throws : 발생 예외를 전가함 publi..
Ⅰ. 예외(Exception) 및 예외 처리 - 코드는 문법을 기반으로 작성함 - 문법을 틀리면, 코드가 동작할 수 없음 (컴파일러가 컴파일을 안 해주기 때문) 1. 예외(Exception)와 에러(Error)의 차이점 - 오류(Error) : 문법이 틀려서 동작할 수 없는 상태 → 수습 불가능, 코드를 수정해야 함 - 예외(Exception) : 문법은 맞는데 프로그램 논리적으로 맞지 않아 발생하는 객체 → 수습 가능, 코드를 추가하여 피해감 2. 예외 처리 - 예외의 종류는 무척 다양함 (또한, 각 예외마다 이름을 가지고 있음) - 프로그램 실행 중 예외가 발생하면 프로그램 내에서는 예외 객체가 생성됨 → 이를 감지하여 처리해 주는 작업을 가리켜 '예외 처리'라고 함 - 예외 처리를 위해서는 try-..
(참고만) Ⅲ. 이너인터페이스(inner interface) 1. 내부 인터페이스 ※ 이너인터페이스는 정적(static)이너인터페 이스만 가능 (static 생략시 자동 추가)
Ⅱ. 익명이너클래스(Anonymous class) 1. 익명 이너클래스 ← 익명(이름을 알 수 없음) + 이너클래스 - 인터페이스의 객체를 별도로 생성하지 않고 사용가능 - 내부적으로만 호출 가능 // Example //인터페이스를 상속한 이너클래스를 생성하여 인터페이스 객체 생성 package sample; class A { C c = new B(); void abc() { c.bcd(); } class B implements C { public void bcd() { System.out.println("인스턴스 이너클래스"); } } } interface C { public abstract void bcd(); } public class Main { public static void main(Stri..
Ⅰ. 이너클래스 (Inner class) 1. 이너클래스 (Inner class) - 정의 : 클래스 내부에 포함된 클래스 - 종류 - 멤버클래스 - 1. 인스턴스 이너 클래스 - 2. 정적 이너 클래스 - 지역클래스 2. 인스턴스 멤버 이너클래스 - 특징: 외부(outter)클래스의 모든 접근지정자의 멤버 접근 가능 - 생성클래스명 : A.class, A$B.class - 객체생성방법 Step#1. 외부클래스 객체 생성 Step#2. 이너클래스 객체 생성 // Example package sample; class Dog { public String name = "순돌이"; void bark() {System.out.println("멍멍");} // 이너클래스는 외부클래스의 부속 개념으로 만들어 줌 cl..
Ⅱ. 인터페이스(Interface) 1. 인터페이스 ※ 인터페이스 : 클래스 상호 간의 공통사항을 공유하기 위한 일종의 약속 - 모든 필드가 public static final로 정의 - 모든 메소드가 public abstract로 정의 (디폴트 메소드 제외) - 인터페이스로 new 연산 못함 - 인터페이스도 다형성 적용 가능 - 디폴트 메소드는 public로 정의 - 자체적으로 객체 생성 불가 2. 인터페이스 정의 3. 인터페이스의 상속 - 상속 시 implements 사용 // Example package sample; // 인터페이스 : 클래스 상호 간의 공통사항을 공유하기 위한 일종의 약속 interface Refri { void iceMaking(); void normalTemp(); void ..
Ⅰ. 추상클래스 (abstract class) 1. 추상클래스의 위치 2. 추상클래스의 개념 - 추상메소드(abstract method)를 포함한 클래스 - 메소드의 본체({ })가 없고 세미콜론(;)으로 끝남 3. 오버라이딩(overriding) vs. 구현하기(implements) - 오버라이딩 (overriding) - 부모클래스의 메소드(완성/미완성)를 자식클래스에서 재정의(완성) - 구현하기 (implements) - 부모클래스의 미완성메소드(추상메소드)를 자식클래스에서 재정의(완성) 4. 추상클래스의 특징 - class 앞에 abstract를 붙여야 함 - 추상클래스는 그 자체로는 객체 생성 불가함 (추상메소드(abstract method/미완성 메소드)를 포함하기 때문) - 추상 클래스는 오..
Ⅱ. abstract (추상화) 1. 추상화의 종류 - 추상 클래스 - 인터페이스 2. abstact(추상) 메소드 ※ 추상화 : 뚜렷한게 형태가 있지 않지만, 그것을 표현해 둠 - 뚜렷하게 기능이 정의되어 있지 않은, 선언 부분만 존재하는 메소드 // Example package sample; // 추상 메소드가 하나라도 있으면, 클래스는 '추상 클래스'여야 함 abstract class Animal { // abstract : 기능 없이 상속만 가능 (중괄호를 없애야 함) abstract void hunting(); } class Eagle extends Animal { void hunting() { System.out.println("생쥐 사냥"); } } class Puma extends Anim..
Ⅰ. final 1. final 필드, final 지역변수 - 변수의 상수화 - 처음 지정된 값을 바꿀 수 없음 - 변수에 final을 붙이면 변수가 아니게 됨 → 값을 변경할 수 없고, 추가적인 값의 대입 자체가 불가 (상수의 상태가 됨) ※ final로 변수를 고정시킬 경우, 선언과 동시에 값을 지정해야 함 ex) final int a = 3; 2. final 메소드, final 클래스 - final 메소드 : 상속시 Override 불가 - final 클래스 : 상속 자체 불가 3. final 필드/메소드/클래스 메소드 최종정리
Ⅵ. 최상위 클래스 Object 1. Object 클래스 : 모든 자바 클래스의 부모 클래스 - 자바의 모든 클래스는 Object의 자식클래스 = 자바의 모든 클래스는 Object의 메소드를 가짐 2. Object 메소드 : toString ( ) - 객체의 정보 패키지.클래스명@해쉬코드 - 일반적으로 오버라이딩해서 사용 // Example1 // Object 클래스의 toString() 메소드 package sample; class A { //extends Object (컴파일러에 의해서 자동추가) int a = 3; int b = 4; } class B {// toString() overriding int a = 3; int b = 4; public String toString() { return "..
Ⅴ. super와 super( ) 1. super 키워드 vs super() 메소드 - super 키워드 → 부모클래스의 객체 - 필드명 중복 또는 메소드 오버라이딩으로 가려진 부모의 필드/메소드를 호출하기 위해 주로 사용 // Example1 // 멤버 앞에 참조변수를 생략(this.)하는 경우의 메소드 호출 package sample class A { void abc() { System.out.println("A 클래스의 abc()"); } } class B extends A { void abc() { System.out.println("B 클래스의 abc()"); } void bcd() { abc(); // this.abc(); 와 동일 (this는 나 자신, super는 부모) } } public..
NewBean
'Programming Language/Java' 카테고리의 글 목록 (2 Page)