Cute Running Puppy
반응형

Language 56

[자바의 정석] chapter06. 객체지향 프로그래밍1 (2)

오버로딩 (overloading) 오버로딩이란? 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것 ⇒ 메서드 오버로딩 오버로딩의 조건 메서드 이름이 같아야 한다 매개변수의 개수 또는 타입이 달라야 한다 이름이 같더라도 매개변수가 다르기에 메서드가 구분될 수 있다. 조건을 만족시키지 않으면 중복 정의로 간주되어 컴파일 에러가 발생한다 반환 타입을 통해서만 구별되므로 반환타입은 영향을 미치지 않는다 (반환타입만 다르면 함수 중복으로 간주된다) 매개변수의 순서가 다르더라도 오버로딩된다 // 오버로딩 가능 long add (int a, long b); long add (long a, int b); 사용자가 매개변수의 순서를 외우지 않아도 되지만 add(3,3)과 같이 호출할 경우 어느 메서드가 호출된 ..

[자바의 정석] chapter06. 객체지향 프로그래밍1 (1)

객체지향언어 객체지향언어의 역사 기본 이론 실제 세계는 사물(객체)로 이루어져 있으며, 발생하는 모든 사건들은 사물간의 상호작용이다 객체지향언어 주요 특징 코드의 재사용성이 높다 새로운 코드를 작성할 때 기존의 코들를 이용하여 쉽게 작성할 수 있다 코드의 관리가 용이하다 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다 신뢰성이 높은 프로그래밍을 가능하게 한다 제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을 제거하여 코드의 불일치로 인한 오동작을 방지할 수 있다 코드의 재사용성이 높고 유지보수가 용이하다라는 특징은 프로그램 개발, 유지보수에 드는 시간과 비용을 획기적으로 개선하였다 재사용성, 유지보수, 중복 코드 제거라는 3가지 관점에서 객체 지..

[자바의 정석] chapter 05. 배열 array

배열 (array) 배열(array)이란? 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것 // 5개의 int를 저장할 수 있는 배열 int [] score = new int[5]; // score은 배열을 다루는 데 필요한 참조 변수 O, 저장공간 X 저장공간이 연속적으로 배치되어 있다 배열의 선언과 생성 // 선언 방법 1 // 타입 [] 변수이름; int [] score; // 선언 방법 2 // 타입 변수이름[]; int score[]; 배열의 생성 배열을 선언하는 것은 단지 생성된 배열을 다루기 위한 참조변수를 위한 공간을 만드는 것 매열을 생성해야만 비로소 값을 저장할 수 있는 공간이 만들어지는 것이다 선언 생성 역할 참조 변수를 위한 공간 할당 값을 저장할 수 있는 공간 할당 방법 타입 ..

[자바의 정석] chapter 04. 조건문과 반복문 (if, switch, for, while, statement)

chap 04. 조건문과 반복문 제어문 (control statement) 프로그램의 흐름을 바꾸는 역할 1. 조건문 - if, switch 조건식 + {}으로 구성 조건식의 연산결과에 따라 실행할 문장이 달라져 프로그램의 실행흐름을 변경할 수 있다 1.1 if 문 조건문이 true이면 {} 안의 문장 수행 if (조건식) { // 조건식 == true 일 때 실행 } 조건식 일반적으로 비교연산자와 논리연산자로 구성 등가 연산자 (==) 대신 대입 연산자 (=)를 사용하지 않도록 주의하자 조건식의 결과는 반드시 true, false가 되어야 한다 블럭 {} {}을 사용하여 여러 문장을 하나의 단위로 묶을 수 있다 이것을 블럭이라 한다 } 다음에 ;을 붙이지 않는다는 것에 주의하자 블럭 안의 문장들은 탭으..

[자바의 정석] chapter 03. 연산자 operator

1. 연산자 (operator) 연산을 수행하는 기호 1.1 연산자와 피연산자 연산자 (operator): 연산을 수행하는 기호 피연산자 (operand): 연산의 작업 대상 (변수, 상수, 리터럴, 수식) 연산자는 피연산자로 연산을 수행하고 나면 항상 결과 값을 반환한다 1.2 식과 대입연산자 식: 연산자와 피연산자를 조합하여 계산하고자 하는 바를 표현한 것 식 평가: 식을 계산하여 결과를 얻는 것 작성한 식을 프로그램에 포함시키기: 식의 끝에 ‘;’ 붙이기 평가된 값은 대입 연산자 ’=’를 사용해야만 저장된다 1.3 연산자의 종류 분류1. 산술, 비교, 논리, 대입 연산자 분류2. 단항, 이항, 삼항 연산자 1.4 연산자의 우선순위와 결합 규칙 연산자가 둘 이상일 경우, 연산자의 우선순위에 의해 연산..

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(); 불가) 추상 클래스를 상속한 자식 클래스를 생성하면 그 자식 클래..