IT/JAVA

Java Section 07 : 클래스

_KH_ 2025. 1. 14. 16:48

01 객체 지향 프로그래밍

■ 객체 지향 프로그래밍(OOP) : 객체를 중심으로 프로그램 구조를 설계하고 프로그래밍하는 것

■ 객체 : 상태를 표현할 수 있고, 우리가 행동으로 실행할 수 있는 모든 것.

=> 자바는 객체를 기반으로 한 대표적인 프로그래밍 언어! 

 

02 객체와 클래스

■ 클래스 : 자바의 기본단위. 하나의 클래스를 통해 여러 객체를 생성/사용

■ 구조 : Cat c = new Cat();

// 클래스명 객체명 = new 클래스명();

=> "new 연산자"를 이용해서 객체 생성

- 클래스는 보통 하나의 소스 파일에 하나의 클래스를 선언하지만 파일의 이름과 동일한 클래스만 public을 사용하고, 다른 클래스는 public을 제외한다면 2개 이상의 클래스를 하나의 소스 파일에 작성할 수 있다.

 

03 클래스의 구성

클래스 구성 요소 : 필드(field), 메서드(method), 생성자(constructor)

-> 각 요소는 필요에 따라 생략하거나 2개 이상 작성 가능

 

① 필드(=멤버변수) : 객체가 가져야 할 데이터 상태를 저장하는 변수.

- 다른 클래스에서는 (예를 들어 main 함수) "객체명.필드명"을 통해 접근한다.

- 클래스 선언 시 필드의 값을 초기화 하지 않으면 객체 생성 시 자동으로 초기화 된다 (힙 메모리 영역이기 때문에!)

 

② 메서드 : 객체의 기능을 담당하는 중괄호{ } 블록.

- 1개의 메서드는 보통 1개의 기능 수행

반환타입 메서드명() {
	// 코드 작성
}

 - 리턴값이 있을 경우에는 리턴할 데이터의 형태가 무엇인지 메서드명() 앞에 반환 타입으로 반드시 기재

   (void 제외 모두 리턴값 적기)

- 다른 클래스에서 메서드 사용 시 객체를 먼저 생성한 후, 참조변수를 통해 그 객체의 메서드를 사용한다.

클래스명 객체명 = 클래스명(); // 객체 생성
객체명.메서드명(); // 생성한 객체의 메서드 호출(사용)

- 메서드를 한 번 선언하면 여러 번 호출하여 사용 가능

- 메서드 이름은 기능을 알아보기 쉽도록 작성

 

③ 생성자 : 객체를 생성할 때 객체 변수를 초기화하는 역할 담당

클래스명 객체명 = new 클래스명();

 

에서 new 클래스명() 부분이 생성자에 속함.

 

- 필드와 메서드를 호출하는 등 객체를 사용하려면 객체 변수가 메모리에 올라가야 하는데, 이렇게 메모리에 객체 변수를 올려주는 역할을 생성자가 한다.

 

04 정적 멤버와 static

: 모든 객체의 필드 값이 같아야 할 경우 사용

■  각 객체가 가지는 필드와 메서드를 인스턴스(객체) 멤버라고 하고, 모든 객체들이 공유하며 사용하는 하나의 필드와 메서드를 정적 멤버라고 한다.

■ 정적 멤버 : 필드와 메서드를 선언할 때 static이라는 키워드가 붙은 멤버

■ static : "객체와 무관하게"

- static이 붙이면 객체 생성 없이 바로 사용 가능 (프로그램 시작 시 바로 메모리에 올라감)

클래스명.필드;
클래스명.메서드();

 

- 정적멤버는 클래스명으로 접근하는 것을 추천