티스토리 뷰

  1. 객체지향언어
    • 객체지향언어: 절차적 언어에 몇 가지 새로운 규칙을 추가한 보다 발전된 형태의 프로그래밍 언어이다. 규칙들을 이용해 코드 간에 서로 관계를 맺어 줌으로써 보다 유기적으로 프로그램을 구성할 수 있다.
  2. 클래스와 객체
    • 클래스와 객체의 정의와 용도: 클래스는 객체를 정의해 둔 것이다. 클래스는 객체를 생성하는 데 사용된다.
    • 객체와 인스턴스: 클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화라고 한다. 또한 어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스라고 한다.
    • 객체의 구성요소 - 속성과 기능: 객체는 속성(variable)과 기능(method)으로 이루어져 있다. 객체가 가진 속성과 기능을 그 객체의 멤버라고 한다.
    • 인스턴스의 생성과 사용: 인스턴스를 사용하기 위해서는 우선 해당 클래스 타입의 참조 변수를 선언해야 한다. 해당 클래스의 인스턴스를 생성하고 참조 변수 안에 인스턴스의 주소 값을 저장한다.
    • 객체 배열: 다른 데이터와 동일하게 객체 역시 배열로 다룰 때 편리하다. 객체 배열 안에는 객체의 주소 값들이 저장된다.
    • 클래스의 또 다른 정의: 프로그래밍적인 관점에서의 클래스는 단순히 데이터와 함수의 결합으로 볼 수 있다. 또한 클래스는 기본으로 제공되는 자료형 외에 사용자가 직접 정의한 사용자 정의 타입으로 보기도 한다.
  3. 변수와 메서드
    • 선언 위치에 따른 변수의 종류: 변수의 선언 위치에 따라 변수의 종류를 분류할 수 있다. 클래스 영역에 선언되었을 경우는 클래스 변수 또는 인스턴스 변수이고, 메서드나 생성자 등의 클래스 영역 외에서 선언된 경우는 지역변수로 분류할 수 있다. 클래스 영역에 선언된 클래스 변수와 인스턴스 변수는 static의 유무에 따라 분류된다. static이 붙은 변수는 클래스 변수, 붙지 않은 경우에는 인스턴스 변수이다.
    • 클래스 변수와 인스턴스 변수: 인스턴스 변수는 인스턴스가 생성될 때마다 생성되어 각 인스턴스마다 다른 값을 저장할 수 있다. 반면 클래스 변수는 모든 인스턴스가 하나의 저장공간을 공유해 모든 인스턴스가 값을 공유한다.
    • 메서드: 메서드(method)는 수학에서의 함수와 유사하다. 메서드는 재사용성을 높이고 중복된 코드를 제거하고 프로그램을 구조화하기 위해 사용한다.
    • 메서드의 선언과 구현: 메서드는 선언부와 구현부로 나누어 설명할 수 있다. 선언부에서는 반환 타입, 메서드 이름, 매개변수 선언을 순서로 기재한다. 구현부에는 메서드가 호출됐을 때 수행할 문장들을 넣는다. 메서드의 반환 타입이 'void'아닌 경우는 반환 값 또한 'return'을 통해 명시해주어야 한다.
    • 메서드의 호출: 메서드는 메서드 이름과 인수(매개변수)를 이용해 호출한다.
    • JVM의 메모리 구조: 응용프로그램이 실행되면, JVM은 시스템으로부터 프로그램을 수행하는데 필요한 메모리를 할당은 다.  JVM은 이 메모리를 method area(클래스 데이터), call stack(인스턴스 데이터), heap(메서드 데이터)으로 나누어 관리한다. 
    • 기본형 매개변수와 참조형 매개변수: 매개변수의 타입이 기본형일 때는 값이 복사되고, 참조형일 때는 인스턴스의 주소가 복사된다.
    • 재귀 호출(recursive call): 메서드의 내부에서 메서드 자신을 다시 호출하는 것을 '재귀 호출'이라고 한다.
    • 클래스 메서드(static메서드)와 인스턴스 메서드: 클래스를 정의할 때, 인스턴스 변수와 관련된 작업을 하는 메서드는 인스턴스 메서드로 구현하고, 인스턴스와 관계없는 메서드는 static을 붙여 클래스 메서드로 정의한다.
  4. 오버로딩(overloading)
    • 오버로딩이란?: 자바에서는 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메서드가 있어도, 매개변수의 개수와 타입이 다르다면 같은 이름을 사용해서 메서드를 정의하는 것이 가능하다.
    • 오버로딩의 조건: 메서드의 이름은 같아야 하고, 매개변수의 개수 또는 타입은 달라야 한다.
    • 오버로딩의 장점: 같은 일을 하는 메서드를 같은 이름으로 정의함으로써 오류를 줄이고 이름을 절약할 수 있다.
  5. 생성자(constructor)
    • 생성자란?: 생성자는 인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메서드'이다. 생성자의 이름은 클래스의 이름과 같아야 하며 생성자는 리턴값이 없다.
    • 생성자에서 다른 생성자 호출하기 - this(), this: 생성자에서 다른 생성자를 호출할 때는 클래스 이름 대신 this를 사용한다. 또한 다른 생성자를 호출할 때는 반드시 첫 줄에서만 호출이 가능하다.
    • 생성자를 이용한 인스턴스의 복사: Java API의 많은 클래스들이 인스턴스의 복사를 위한 생성자를 정의해놓고 있다.
  6. 변수의 초기화
    • 초기화 블럭(initialization block): 클래스 초기화 블럭과 인스턴스 초기화 블럭의 두 가지 종류가 있다.
    • 멤버 변수의 초기화 시기와 순서: 클래스 변수는 클래스가 처음 로딩될 때 단 한번 초기화된다. 인스턴스 변수는 인스턴스가 생성될 때마다 각 인스턴스 별로 초기화가 이루어진다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함