develop/Java
[Java] 클래스/객체/메서드
devdw
2021. 8. 21. 16:30
객체지향언어의 특징
- 코드의 재사용성이 높음
- 새 코드 작성 시 기존 코드를 이용하여 쉽게 작성할 수 있음
- 코드의 관리가 용이함
- 코드간 관계를 이용하여 적은 노력으로 쉽게 코드 변경이 가능
- 신뢰성 높은 프로그래밍 가능
- 제어자와 메서드를 이용하여 데이터를 보호하고 올바른 값을 유지하도록함
- 코드의 중복을 제거하여 코드 불일치로 인한 오동작을 방지함
클래스와 객체
클래스
객체를 정의하여 객체 생성 시 사용 → 틀
객체
정의한 클래스로 만든 속성과 기능의 집합 → 실체
- 속성 : 멤버 변수 (상태, 값)
- 기능 : 메서드 (동작)
인스턴스
클래스로부터 만들어진 객체
변수
- 클래스 변수
: 멤버변수 중 static이 붙은 변수- 클래스 영역에 선언
- 클래스가 메모리에 올라갈 때 생성
- 모든 인스턴스가 공통된 값을 유지해야하는 속성인 경우 사용
- 인스턴스를 생성하지 않고도 사용 가능
- 초기화 블럭
: 클래스변수의 복잡한 초기화에 사용class Example { static { } // 초기화블럭 }
- 인스턴스 변수
: 멤버변수 중 static이 붙지 않은 변수- 클래스 영역에 선언
- 인스턴스 생성될 때 생성
- 인스턴스마다 고유한 상태를 유지해야하는 속성인 경우 사용
- 초기화 블럭
: 인스턴스 변수의 복잡한 초기화에 사용
```java
class Example {
{ } // 초기화블럭
}
- 지역변수
: 멤버변수를 제외한 나머지 변수들- 클래스 영역 이외의 영역에 선언 (메서드, 생성자, 초기화 블럭 내부)
- 변수 선언문이 수행되었을 때 생성
- 사용하기 전 반드시 초기화를 해주어야 함
class Test {
int iv; // 인스턴스 변수
static int cv; // 클래스 변수(static 변수, 공유 변수)
void method() {
int lv = 0; // 지역 변수
}
}
생성자
인스턴스 초기화 메서드
- 클래스 내에 선언됨
- 리턴 값이 없음
- 하나의 클래스에 여러 개의 생성자가 존재할 수 있음
- 생성자 이름은 클래스의 이름과 같아야 함
- 클래스에는 반드시 하나 이상의 생성자가 정의되어있어야 함
기본 생성자 (default constructor)
- 매개변수가 없는 생성자
- 클래스 정의 시 생성자를 만들지 않으면 자동으로 추가해 컴파일함
class Card { Card() { //default constructor } }
매개변수가 있는 생성자
- 생성자 호출 시 값을 넘겨받아 인스턴스를 초기화할 수 있는 생성자
class Card { int v1; Card(int v1) { v1 = v1; } }
생성자에서 다른 생성자 호출하기
- 생성자 이름 대신 this로 호출해야함
- 반드시 생성자의 첫 줄에서만 호출 가능
메서드
특정 작업을 수행하는 일련의 문장들을 하나로 묶은 것
특징
- 높은 재사용성
: 한 번 만들어 놓은 함수는 여러 번 사용 가능 - 중복된 코드 제거
- 프로그램 구조화메서드 종류
- 클래스 메서드 (static method)
- 인스턴스 생성하지 않고 사용 가능
- 인스턴스와 관계없는 (인스턴스 변수를 사용하지 않는) 메서드
- 인스턴스 메서드
- 인스턴스 생성 후 사용 가능
- 인스턴스 변수와 관련된 작업하는 메서드 (인스턴스 변수를 사용)