# 관련 포스팅
1. (현재 글) 객체 지향 패러다임과 멤버 변수 : https://young0105.tistory.com/13
2. 메서드 : https://young0105.tistory.com/28
3. 생성자 : https://young0105.tistory.com/29
클래스 (Class)
- 객체를 정의하는 설계도
- 객체의 속성을 정의하고, 기능을 구현하여 만들어 둔 코드 상태
- 추상적이고 포괄적인 개념 ex) 동물
- 클래스 명명 규칙 : 대문자로 시작할 것
- public 클래스는 java 파일에 단 하나만 존재하며, public 클래스명과 java 파일명이 동일함
객체 (Object, Instance)
- 'new' 키워드를 통해 실제 메모리에 로드된 것 (클래스를 메모리에 생성한 상태) ★
- 클래스를 기반으로 생성된 인스턴스
→ 각 객체마다 다른 멤버 변수 값을 가지게 됨
- 구체적인 대상 ex) 사자, 호랑이, 기린
- . 연산자
: 객체의 멤버변수, 메서드에 접근할 때 사용하는 연산자 ex) 객체명.변수명
[더 정확한 개념]
· Object : 실체화가 가능한 것
· Instance : heap 메모리에 올라가, 실체화가 된 것
객체 지향 패러다임
- 객체에 직관적이고 합당한 이름을 붙여야 함
- 객체의 취지에 맞는 상태(변수)와 기능(메서드)를 정의함
- 객체의 상태(변수) 값을 변경시킬 때는 동작(메서드)를 이용해야 함 → set 메서드의 의의
- 객체와 객체 간의 관계를 설정함
- 객체들 간에 서로 협력하고 상호 작용할 수 있게 설계함 ★ ex) '학생'은 '버스'를 탄다
(서로 메시지를 주고받음)
멤버 변수 선언
public class 클래스명 {
// 상태 (변수)
자료형 멤버변수1;
자료형 멤버변수2;
...
}
- 변수 선언에 연산식을 바로 사용할 수 없음 → 메서드 or 생성자 안에서 연산 가능
객체 생성
public static void main(String[] args) {
// 객체 생성
클래스명 참조변수 = new 클래스명();
// 객체의 멤버 변수 값 초기화
참조변수.멤버변수1 = 값;
참조변수.멤버변수2 = 값;
...
}
- new 키워드를 사용한 시점부터 메모리 공간에 존재하는 객체가 됨
→ 그 이전에는 아직 메모리에 존재하지 않으며, 객체가 아님
- 주의 사항 : 객체 생성 및 이후 코드는 반드시 main 함수 내에 입력할 것
# 멤버 변수의 값을 사용자에게 입력 받기
public static void main(String[] args) {
// 객체 생성
클래스명 참조변수 = new 클래스명();
// Scanner 객체 생성
Scanner sc = new Scanner(System.in);
// 문자열 입력 받기
참조변수.멤버변수1 = sc.nextLine();
// 정수 입력 받기
참조변수.멤버변수2 = sc.nextInt();
sc.nextLine(); // 개행문자 제거 용도
}
# Scanner 객체에 대한 설명 : https://young0105.tistory.com/12
혼동하기 쉬운 변수들
① 지역 변수
- 함수/메서드 내에서 선언하여, 그 함수/메서드 내에서만 사용하는 변수
- 해당 함수 밖에서는 사용할 수 없음
- 스택 메모리에 저장됨
② 멤버 변수
- 클래스 내에서 객체의 속성/상태/특성을 정의할 때 사용되는 변수
- 객체로 생성되면 해당 객체와 멤버 변수 값들은 힙 메모리에 저장됨
- 변수가 선언되면 기본값으로 자동 초기화됨 (↔ 지역 변수)
③ 참조 변수
- 메모리에 생성된 객체를 가리키는 변수
- 메모리 상에 생성된 객체에 접근할 수 있는 메모리 주소 값(참조 값)을 가짐
- 스택 메모리에 저장됨
# 스택 메모리와 힙 메모리에 대한 설명 : https://young0105.tistory.com/27
기타 메모
- 지역 변수와 멤버 변수의 이름이 동일해도 됨
- 하나의 java 파일 안에 여러 개의 클래스를 작성할 수 있음
· 단, public을 가진 클래스는 단 하나만 선언할 수 있음
→ *주의 : public을 가진 클래스의 이름과 java 파일의 이름이 다르면 오류 발생
- UML 다이어그램 (클래스 다이어그램)
: 클래스 간 관계를 도식화한 다이어그램
'Java > Base' 카테고리의 다른 글
[Java] 스택 메모리와 힙 메모리 (0) | 2023.02.06 |
---|---|
[Java] 함수 (0) | 2023.02.04 |
[Java] 참조 자료형 (Scanner, Random) (0) | 2023.02.03 |
[Java] 제어문 : 조건문과 반복문 (if, switch, for, while) (0) | 2023.02.02 |
[Java] 연산자 (0) | 2023.02.02 |