변수(Variable)
변수는 크게 클래스 영역과 메서드 영역으로 나뉘어 3가지로 분류할 수 있다.
iv(Instance variable, 인스턴스 변수 - 클래스 영역)
인스턴스가 생성되었을 때 만들어지는 변수로 개별적으로 값을 유지해야 하는 값을 저장한다.
※ 인스턴스를 넓은 범위에서 객체라 부르기 때문에 서로 같은 의미라고 생각하면 된다.
cv(Class variable, 클래스 변수 - 클래스 영역)
- 클래스가 메모리에 올라갈 때 생성되며 공통적으로 값을 유지해야 하는 값을 저장한다.
- 변수에 static을 붙여야 클래스 변수가 된다.
- 클래스 변수는 객체가 생성될 때 다른 공간에 하나만 생성된다.
※ 객체를 생성해서 사용할 때 클래스 변수는 해당 클래스 명을 명시해줘야 한다. 하지 않아도 오류는 없지만, 인스턴스 변수와 구분하기 위해서 클래스 명을 명시한다.
lv(Local variable, 지역 변수 - 메서드 영역)
- 지역 변수는 해당 메서드가 실행될 때 생성되고, 메서드 종료 시 지역 변수도 없어진다.
매개 변수(Parameter)
기본형 매개변수
변수의 값을 읽을 수만 있고 변경할 수 없다. (Read Only)
참조형 매개변수
변수의 값을 읽고 변경할 수 있다. (Read & Write)
참조형 반환타입
메서드를 호출하면 메서드 내에서 객체를 생성하고 해당 객체의 주소를 반환한다.
메서드(Method)
메서드는 작업 단위로 문장들을 묶어서 이름을 붙인 것이다.
메서드는 선언부와 구현부가 있고, 선언부에서 매개변수(0~N개)를 받아 구현부에서(0~1개) 값을 리턴한다.
메서드는 클래스 내에서 존재해야 하고, 호출하지 않으면 메서드가 실행되지 않는다.
메서드는 반복적이거나 여러 문장을 수행하는 것을 메서드로 작성하고, 하나의 기능만 수행하도록 작성한다.
여러 개의 값을 반환한다면 배열로 묶어서 반환한다.
인스턴스 메서드
- 참조변수를 통해서 메서드를 호출한다.
- 인스턴스 멤버와 관련된 작업을 한다.
- 메서드 내에서 인스턴스 변수를 사용할 수 있다.
클래스 메서드(static 메서드)
- 객체를 생성하지 않아 참조 변수 없이 클래스 이름을 통해서 메서드를 호출한다.
- 인스턴스 멤버와 관련이 없는 작업을 한다.
- 메서드 내에서 인스턴스 변수를 사용할 수 없다.
※ 클래스 메서드는 프로그램 실행 시 메모리에 바로 올라가기 때문에 항상 사용할 수 있지만, 인스턴스 멤버는 인스턴스를 생성해야 사용할 수 있기 때문에 클래스 메서드에서는 인스턴스 멤버를 사용할 수 없다.
참조: https://www.youtube.com/watch?v=qA0D-nAcAvQ&list=PLW2UjW795-f5JPTsYHGAawAck9cQRw5TD&index=7 (남궁성의 자바의 정석)
코드: https://github.com/Hosae0905/Object-OrientedPrograming (깃허브 코드)
'자바' 카테고리의 다른 글
객체 지향 프로그래밍 - Super (0) | 2023.08.15 |
---|---|
객체 지향 프로그래밍 - 상속 (0) | 2023.08.15 |
객체 지향 프로그래밍 - 생성자 & this (0) | 2023.08.06 |
객체 지향 프로그래밍 - 오버로딩(Overloading)과 오버라이딩(Overriding) (0) | 2023.08.06 |
객체 지향 프로그래밍 - 클래스와 객체 (0) | 2023.08.05 |