자바 (Java) 썸네일형 리스트형 Chpt 6. 객체 지향 프로그래밍 - 주제 5. 생성자는 변수 초기화 메서드이다. 1. 오버로딩 (Overloading) 원래 메서드와 메서드 이름의 관계는 일대일이지만 필요에 따라 일대다의 관계도 가능하다. 이를 오버로딩 말 그대로 메서드에 다른 이름들을 쌓은 형태라 생각하면 된다. 오버로딩의 대표적인 예는 println 메서드이다. 다음은 오버로딩의 조건이다. (1) 메서드 이름이 같다. (2) 매개변수의 이름은 관계 없고, 개수 또는 타입이 달라야 한다. (3) 반환 타입은 관계 없다. (4) 매개변수의 개수와 타입 종류의 개수가 같은 경우 위치가 달라야 한다. 아래 [예 1]은 (4)를 보여주는 예시다. [예 1] long add(int a, long b) { return a + b; } long add(long a, int b) { return a + b; } 위와 같은 경우.. 더보기 Chpt 6. 객체 지향 프로그래밍 - 주제 4. 메서드에는 static과 인스턴스 메서드가 있다. 1. static (클래스) vs. 인스턴스 메서드 메서드 종류 객체 생성 필요 인스턴스 멤버와 관련된 작업 인스턴스 멤버 사용 가능 여부 사용 방법 인스턴스 메서드 (메서드이름) O O O 참조 변수.메서드 이름 static 메서드 (static + 메서드이름) X X X 클래스 이름.메서드 이름 인스턴스 메서드는 인스턴스 멤버와 관련된 작업을 하는 메서드이다. 그렇기 때문에 객체 생성이 꼭 필요한 것이다. 반대로 static 메서드는 객체를 생성하지 않아도 사용 가능하다. static 메서드 사용 시점에 객체가 생성되지 않았을 경우 인스턴스 멤버들은 사용 불가하기 때문에 static 메서드는 인스턴스 멤버를 사용할 수 없는 것이다. 위 표에서 2-4번째 열이 모두 연관 있음을 알아두자. [참고] 멤버.. 더보기 Chpt 6. 객체 지향 프로그래밍 - 주제 3. 매개변수와 반환타입 1. 호출 스택 (Call stack) 호출 스택은 위가 뚫린 상자 모양의 메모리라 생각하면 된다. 메서드가 호출되면 호출 스택에 메서드 실행을 위한 공간이 스택(책) 형식으로 쌓이며, 실행이 끝나면 반환값을 아래 메서드에게 주며 비워진다. 이때, 스택이 2개 이상이면 최상단 스택만 실행 중이며 밑에 있는 모든 스택은 대기 중이다. 그리고 실행 중인 메서드 스택 바로 밑 스택의 메서드가 실행 중인 메서드를 호출한 것이다. 정리하면 다음과 같다. (1) 메서드가 호출되면 메모리를 스택에 할당 받는다. (2) 메서드가 종료되면 할당 받은 메모리를 반환, 스택에서 제거된다. (3) 최상단 메서드만 실행 중이다. (4) 메서드 바로 밑 메서드가 그 위 메서드를 호출한 것이다. [참고] 힙 영역은 인스턴스 멤버,.. 더보기 Chpt 6. 객체 지향 프로그래밍 - 주제 2. 클래스는 변수와 메서드의 묶음이다. 1. 변수 1) 변수의 종류 앞서 변수의 타입에는 기본형 8가지와 그 외 참조형이 있다는 것을 배웠다. 변수의 종류는 선언 위치에 따라 3가지로 구분한다. 변수를 선언할 때 변수의 범위를 최대한 좁히는 것이 좋다. 변수의 종류 선언 위치 사용 방법 사용 가능 시점 인스턴스 변수 (iv) 클래스 영역 참조형 변수.인스턴스 변수 객체 생성 이후 클래스 변수 (static + iv) 클래스 이름.클래스 변수 메모리에 로딩 될 때 = 객체 생성 이전 (항상) 지역 변수 (lv) 메서드 영역 지역 변수 메서드 호출 시 클래스 내 영역 중 메서드 영역은 메서드의 선언부, 구현부이고 그 외 영역은 모두 클래스 영역이다. 따라서 메서드의 매개변수 또한 지역 변수이며 이는 나중에 설명하도록 하겠다. 위 표는 외우도록 하.. 더보기 Chpt 6. 객체 지향 프로그래밍 - 주제 1. 클래스와 객체 1. 객체 지향 언어의 개념과 특징 프로그래밍은 절차적에서 객체 지향적으로 그 흐름이 바뀌었는데 이와 같은 흐름을 반영하는 언어를 객체 지향 언어라고 한다. 어렵게 생각할 필요가 없고 다음과 같다고 생각하면 된다. 객체 지향 언어 = 프로그래밍 언어 + 객체 지향 개념 (규칙) 객체 지향 개념은 규칙이기 때문에 외워야 한다. 다음 4가지 핵심 규칙을 외우도록 하자. (1) 캡슐화 (2) 상속 (3) 추상화 (4) 다형성 ⭐⭐⭐⭐⭐ 객체 지향 언어는 다음과 같은 장점이 있다. (1) 코드의 높은 재사용성 = 중복 제거 (2) 유지 보수의 용이 2. 클래스와 객체 1) 클래스와 객체의 정의, 용도 그렇다면 객체가 무엇인지 알아보기 앞서 클래스와 객체의 정의 그리고 용도를 먼저 알아보자. 클래스 예) 설계도 .. 더보기 Chpt. 5 배열 - 주제 2. 2차원 배열은 배열의 배열이다. 테이블 형태의 데이터를 저장하기 위해서 2차원 배열이 필요하다. 1. 2차원 배열의 선언과 생성 그리고 초기화 1) 2차원 배열의 선언과 생성 1차원 배열에 아무 곳에 []를 추가해주면 2차원 배열이 된다. 따라서 다음과 같은 형태로 2차원 배열을 선언할 수 있다. 참고로 []을 하나 추가할 때마다 차원이 증가하게 된다. (1) 타입[][] 변수 이름; [예] int[][] 2dArr (2) 타입[] 변수 이름[]; [예] int 2dArr[] (3) 타입 변수 이름[][]; [예] int 2dArr[][] 보통 (1)과 같은 형태로 선언한다. 그리고 다음과 같은 형태로 2차원 배열을 생성할 수 있다. 타입[][] 변수 이름 = new 타입[행 길이][열 길이]; int[][] engScores = ne.. 더보기 Chpt. 5 배열 - 주제 1. 배열은 변수의 모음 만약 전교생의 영어 점수를 다룰 때 변수로 다루려면 각각의 변수에 모두 이름을 부여해야 하는 등 여간 불편한 일이 아닐 것이다. 따라서 같은 종류, 즉 타입이 같은 변수들을 한번에 다루기 위해 배열이 도입됐다. 영어 점수를 저장할 수 있는 배열을 다음과 같이 만들면 배열에 접근할 수 있는 참조 변수에 이름 (engScore)을 붙이고 인덱스([0], [1], ...)를 통해 engScore[0]과 같이 값에 접근한다. 이때 배열의 각 값을 요소라고 한다. 또한 인덱스의 범위는 0부터 배열의 길이 - 1이다. 배열의 길이는 변수.length 상수 (변하지 않는 변수)를 통해 구할 수 있다. 1. 배열의 선언과 생성 그리고 초기화 1) 배열의 선언과 생성 선언과 동시에 생성이 되는 변수와 달리 배열은 선언과.. 더보기 Chpt. 4 조건문과 반복문 - 주제 2. 조건만 맞으면 반복 실행되는 반복문 반복문에는 크게 for문과 while문이 있다. if문 switch문과는 달리 for문과 while문은 서로 바꿀 수 있다. 1. for문 반복 횟수를 알고 있을 때 for문을 사용하자. 1) 실행 흐름 for문의 실행 순서는 다음과 같다. for (초기화; 조건식; 증감식) { // 문장... } (1) 반복문에 사용할 변수를 초기화한다. 둘 이상의 같은 타입 변수를 초기화 할 수 있으며 ,로 구분하도록 한다. (2) 조건식이 참이면 블록을 실행한다. (3) 초기화된 변수를 증감하는 증감식을 수행한다. 증감식도 반복문과 마찬가지로 초기화한 변수를 증감하기 위해 두 문장 이상 사용할 수 있으며 ,로 구분한다. (4) (2)-(3)을 반복하며 (2)에서 조건식이 거짓이면 for문 전체를 빠져나간다. [참고.. 더보기 이전 1 2 3 4 5 다음