티스토리 뷰
- 객체지향언어
- 객체지향언어: 절차적 언어에 몇 가지 새로운 규칙을 추가한 보다 발전된 형태의 프로그래밍 언어이다. 규칙들을 이용해 코드 간에 서로 관계를 맺어 줌으로써 보다 유기적으로 프로그램을 구성할 수 있다.
- 클래스와 객체
- 클래스와 객체의 정의와 용도: 클래스는 객체를 정의해 둔 것이다. 클래스는 객체를 생성하는 데 사용된다.
- 객체와 인스턴스: 클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화라고 한다. 또한 어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스라고 한다.
- 객체의 구성요소 - 속성과 기능: 객체는 속성(variable)과 기능(method)으로 이루어져 있다. 객체가 가진 속성과 기능을 그 객체의 멤버라고 한다.
- 인스턴스의 생성과 사용: 인스턴스를 사용하기 위해서는 우선 해당 클래스 타입의 참조 변수를 선언해야 한다. 해당 클래스의 인스턴스를 생성하고 참조 변수 안에 인스턴스의 주소 값을 저장한다.
- 객체 배열: 다른 데이터와 동일하게 객체 역시 배열로 다룰 때 편리하다. 객체 배열 안에는 객체의 주소 값들이 저장된다.
- 클래스의 또 다른 정의: 프로그래밍적인 관점에서의 클래스는 단순히 데이터와 함수의 결합으로 볼 수 있다. 또한 클래스는 기본으로 제공되는 자료형 외에 사용자가 직접 정의한 사용자 정의 타입으로 보기도 한다.
- 변수와 메서드
- 선언 위치에 따른 변수의 종류: 변수의 선언 위치에 따라 변수의 종류를 분류할 수 있다. 클래스 영역에 선언되었을 경우는 클래스 변수 또는 인스턴스 변수이고, 메서드나 생성자 등의 클래스 영역 외에서 선언된 경우는 지역변수로 분류할 수 있다. 클래스 영역에 선언된 클래스 변수와 인스턴스 변수는 static의 유무에 따라 분류된다. static이 붙은 변수는 클래스 변수, 붙지 않은 경우에는 인스턴스 변수이다.
- 클래스 변수와 인스턴스 변수: 인스턴스 변수는 인스턴스가 생성될 때마다 생성되어 각 인스턴스마다 다른 값을 저장할 수 있다. 반면 클래스 변수는 모든 인스턴스가 하나의 저장공간을 공유해 모든 인스턴스가 값을 공유한다.
- 메서드: 메서드(method)는 수학에서의 함수와 유사하다. 메서드는 재사용성을 높이고 중복된 코드를 제거하고 프로그램을 구조화하기 위해 사용한다.
- 메서드의 선언과 구현: 메서드는 선언부와 구현부로 나누어 설명할 수 있다. 선언부에서는 반환 타입, 메서드 이름, 매개변수 선언을 순서로 기재한다. 구현부에는 메서드가 호출됐을 때 수행할 문장들을 넣는다. 메서드의 반환 타입이 'void'아닌 경우는 반환 값 또한 'return'을 통해 명시해주어야 한다.
- 메서드의 호출: 메서드는 메서드 이름과 인수(매개변수)를 이용해 호출한다.
- JVM의 메모리 구조: 응용프로그램이 실행되면, JVM은 시스템으로부터 프로그램을 수행하는데 필요한 메모리를 할당은 다. JVM은 이 메모리를 method area(클래스 데이터), call stack(인스턴스 데이터), heap(메서드 데이터)으로 나누어 관리한다.
- 기본형 매개변수와 참조형 매개변수: 매개변수의 타입이 기본형일 때는 값이 복사되고, 참조형일 때는 인스턴스의 주소가 복사된다.
- 재귀 호출(recursive call): 메서드의 내부에서 메서드 자신을 다시 호출하는 것을 '재귀 호출'이라고 한다.
- 클래스 메서드(static메서드)와 인스턴스 메서드: 클래스를 정의할 때, 인스턴스 변수와 관련된 작업을 하는 메서드는 인스턴스 메서드로 구현하고, 인스턴스와 관계없는 메서드는 static을 붙여 클래스 메서드로 정의한다.
- 오버로딩(overloading)
- 오버로딩이란?: 자바에서는 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메서드가 있어도, 매개변수의 개수와 타입이 다르다면 같은 이름을 사용해서 메서드를 정의하는 것이 가능하다.
- 오버로딩의 조건: 메서드의 이름은 같아야 하고, 매개변수의 개수 또는 타입은 달라야 한다.
- 오버로딩의 장점: 같은 일을 하는 메서드를 같은 이름으로 정의함으로써 오류를 줄이고 이름을 절약할 수 있다.
- 생성자(constructor)
- 생성자란?: 생성자는 인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메서드'이다. 생성자의 이름은 클래스의 이름과 같아야 하며 생성자는 리턴값이 없다.
- 생성자에서 다른 생성자 호출하기 - this(), this: 생성자에서 다른 생성자를 호출할 때는 클래스 이름 대신 this를 사용한다. 또한 다른 생성자를 호출할 때는 반드시 첫 줄에서만 호출이 가능하다.
- 생성자를 이용한 인스턴스의 복사: Java API의 많은 클래스들이 인스턴스의 복사를 위한 생성자를 정의해놓고 있다.
- 변수의 초기화
- 초기화 블럭(initialization block): 클래스 초기화 블럭과 인스턴스 초기화 블럭의 두 가지 종류가 있다.
- 멤버 변수의 초기화 시기와 순서: 클래스 변수는 클래스가 처음 로딩될 때 단 한번 초기화된다. 인스턴스 변수는 인스턴스가 생성될 때마다 각 인스턴스 별로 초기화가 이루어진다.
'Language > JAVA' 카테고리의 다른 글
[JAVA/테스트] Assertions (0) | 2023.12.29 |
---|---|
[JAVA 객체] 자바의 정석 06장. 객체지향 프로그래밍(1) - 예제 (0) | 2022.01.08 |
[JAVA 객체] 객체지향 프로그램이란2 (0) | 2021.08.28 |
[JAVA 객체] 객체지향 프로그램이란 (0) | 2021.08.26 |
[JAVA 시작하기] JVM 자바가상머신 (0) | 2021.08.21 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 아이엘츠
- 리트코드 1768
- 자바 1004번
- 생활코딩
- 개발
- 스프링부트
- 백준
- 자바 9375
- 스프링 강의
- 컴과
- 웹
- 동덕여대
- 스파크
- BFS
- bcrypaswordencoder
- 컴공
- 백준9375번
- 동덕여대 컴퓨터학과
- 백준 2108
- 프로그래밍
- 코틀린
- 백준 1004
- 그리디 알고리즘
- 안드로이드
- RDD
- 코딩
- 컴퓨터학과
- 리트코드 1768 해석
- 알고리즘
- 자바
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함