[JAVA] 클래스와 객체

thereisname·2024년 4월 4일

Java

목록 보기
2/3
post-thumbnail

1. 클래스(Class)

객체를 정의하는 틀 또는 설계도와 같은 의미로 사용된다.
자바에서는 이러한 설계도인 클래스를 가지고, 여러 객체를 생성하여 사용한다.

  • 객체를 정의해 놓은 것으로 객체를 생성하는데 사용한다.
  • 단지 객체를 생성할 때 사용될 뿐, 객체 자체는 아니다.
  • 클래스의 구성 요소를 맴버라고 한다.
  • 필드는 객체의 상태값을 저장할 맴버 변수, 메서드는 객체 행위를 구현한다.
    멤버

클래스 구성

클래스는 크게 필드(Field), 메소드(Method), 생성자(Constructor)로 구성되며, 이 외에도 내부 클래스(Inner Class)와 같은 다양한 요소를 포함할 수 있다.🛠️

| 필드(Field)

객체의 상태나 특성을 나타내는 변수이다. 클래스 내에서 선언되며, 객체가 가지고 있는 데이터를 저장한다.

| 메소드(Method)

객체가 수행할 수 있는 행동이나 기능을 정의한 코드 블록이다. 특정 작업을 수행하거나 값을 반환하는 역할을 한다.

| 생성자(Constructor)

클래스로부터 객체를 생성할 때 초기화를 담당하는 특별한 메소드이다. 클래스 이름과 동일하며, 객체 생성 시 자동으로 호출된다.

2. 객체

  • 실제 존재하는 것으로 메모리에 생성되는 것을 말한다.
  • 객체는 서로 독립적이며, 다른 객체에 영향을 주지 않는다.
  • new 키워드를 이용하여 객체를 생성한다.
  • 레퍼런스 변수는 객체를 가리키는 변수로, 객체의 주소값을 저장한다.

3. 인스턴스(≒객체)

클래스에 의해 만들어진 객체로 특정 객체가 어떤 클래스의 객체인지 관계 위주로 설명할 때 사용한다. 클래스로 객체를 만드는 것을 '인스턴스화'라고 한다.

예를 들어 Animal cat = new Animal();에서 _"cat은 인스턴스이다"보다는 "cat은 객체이다"라는 표현이, "cat은 Animal의 객체이다"보다는 "cat은 Animal의 인스턴스이다"라고 표현한다.

4. 클래스, 객체 사용

클래스 선언

접근 제어자와 함께 class 키워드를 사용하여 선언한다.

class Circle {.
    int radius;  //원의 반지름 필드
    String name; //원의 이름 필드
    public double getArea() {  //멤버 메소드
        return 3.14 * radius * radius;
    }
}

인스턴스 생성

선언한 클래스를 가지고 Circle객체의 인스턴스를 생성할 수 있다.

Circle pizza;

Circle객체를 생성한 것이 아니라 변수 pizza는 Circle클래스의 객체에 대한 주소를 가지는 변수이다.

new연산자로 객체 생성

new 연산자로 객체를 생성한다. 생성된 Circle객체의 주소를 pizza 변수에 대입한다.

pizza = new Circle();

객체 멤버 접근

객체의 멤버에 접근할 때는 레퍼런스 변수 뒤에 .연산자를 붙인다. radius에 10을 저장한다.

pizza.radius = 10;

5. 생성자

  • 클래스가 호출될 때마다 호출되는 인스턴스 초기화 메서드이다. (인스턴스 변수 초기화)
  • 객체가 생성될 때 new 키워드 다음에 오는 것.
  • 생성자 이름은 클래스 이름과 동일해야 하며, 리턴값은 없다. (void를 쓰지 않음)
  • 모든 클래스에는 반드시 하나 이상의 생성자가 있어야 한다.

기본 생성자

  • 생성자는 반드시 클래스 안에 하나 이상 선언해야 하며, 만들 생성자를 만들지 않았을 경우 JVM1이 대산 기본 생성자를 자동으로 만들어준다
  • 매개 변수 겂고 아무 작업 없이 단순 리턴하는 생성자
  • 생성자를 하나 이상 선언할 경우 기본 생성자가 자동으로 만들어지지 않는다.

6. 변수

변수의 종류선언 위치생성 시기특징
클래스 변수클래스 영역클래스가 메모리에 올라갈 때- '클래스이름.클래스변수명'으로 접근
- 자동 초기화
- static, 값 공유
인스턴스 변수클래스 영역인스턴스 생성 시- '참조변수.인스턴스변수명'으로 접근
- 자동 초기화
지역변수메서드 영역변수 선운문 수행 시- 블록 소멸되면 자동 소멸
- 자동 초기화 X

인스턴스 변수(non-static 변수)

객체가 생성될 때마다 각 객체에 대해 생성되는 변수로, 객체마다 고유한 상태를 가질 수 있습니다.
인스턴스 생성 후, '참조변수.인스턴스변수명'으로 접근이 가능하다.

클래스 변수

클래스 변수는 static 키워드를 사용하여 선언되며, 해당 클래스의 모든 인스턴스가 공유하는 변수이다.
클래스가 메모리에 로드될 때 생성되며, 프로그램이 종료될 때까지 유지된다.
인스턴스 생성 없이 '클래스이름.클래스변수명'으로 접근이 가능하다.

지역변수

메서드 내부에서 선언되며, 메서드의 실행이 시작될 때 생성되고, 메서드가 종료될 때 소멸하는 변수이다.
지역 변수는 선언된 메서드 또는 블록 내에서만 접근할 수 있으며, 외부에서는 접근할 수 없다.

class test {
	int a; 			// 인스턴스 변수
	static int b;	// 클래스 변수 (static 변수, 공유 변수)
 
	// 메서드 영역
	void method() {  
		int a = 0; // 지역변수
	}
}

 


[1]: JVM은 자바 가상 머신으로, 자바 애플리케이션을 운영 체제와 독립적으로 실행할 수 있게 해주는 가상 컴퓨터이다.

profile
개발을 공부하는 주니어 개발자

0개의 댓글