[Java] 클래스와 객체

서연·2025년 4월 23일

Java

목록 보기
14/36

클래스

  • 객체를 만들 때 필요한 설계도이다.
  • 클래스의 첫 글자는 대문자이다.

객체

  • 주변에서 볼 수 있는 컴퓨터, 계산기, 자동차 같은 사물들이 객체이다.
  • 어떤 개념이나 논리 같은 것들도 객체가 될 수 있으며 덧셈, 뺄셈 등
    눈에 보이지 않는 것들도 무형의 객체가 될수 있다.
  • 객체를 만들 때 new라는 키워드를 사용하며 객체를 만드는 과정을 인스턴스화 라고 표현한다.
  • 인스턴스화가 되면 Java 메모리 상에 객체가 만들어진다.

클래스 구조

  • 클래스 구조는 1. 속성, 2. 생성자, 3. 기능 부분으로 나누어진다.
class 클래스 {

		// 1. 속성
		
		// 2. 생성자
		
		// 3. 기능
}

속성

  • 객체는 속성을 작성하는 곳이다.
  • 객체를 생성해야 속성에 접근할 수 있으며 이 속성들을 변수로 표현한다.
  • 프로퍼티(property), 필드(field)라고도 부른다.
  • 사람의 속성을 예로 들면 나이, 이름, 주소 등이 해당한다.

속성 접근

  • 객체를 통해 속성에 접근할 때 객체가 담긴 변수.속성으로 접근한다.
public class Main {

		public static void main(String[] args) {
		
				// 1. 객체 생성
				Person personA = new Person(); 
				Person personB = new Person(); 
				
				// 2. ✅ 객체를 통해 접근 personA 의 name
				System.out.println(personA.name);

				// 3. ✅ 객체를 통해 접근 personB 의 name
				System.out.println(personB.name);
		}
}

생성자

  • 객체를 만들 때 사용하며 객체를 어떻게 만들지 정의해 놓은 것이다.
  • 생성자가 없으면 클래스를 객체화 시킬 수 없다.
  • 클래스를 생성하면 기본 생성자가 자동으로 추가되어서 클래스를 객체화 시킬 수 있다.

생성자 특징

  1. 반환 자료형이 없다.
  2. 클래스명과 이름이 같다.
  3. 여러 개가 존재할 수 있다.

✅ 생성자를 활용해 Person객체 만들기

  • 새로운 생성자를 만들면 기본 생성자는 제거된다.
public class Person {
		String name;
		int age;
		String address;
        
		Person() {} // ❌ 기본생성자 제거됨
		
		Person(String name, int age) { // ✅ 새로운 생성자(조립설명서)
				this.name = name;
				this.age = age;
		}
}

public class Main {

		public static void main(String[] args) {
				Person personA = new Person("gygim", 10); // ✅ 조립설명서 준수
				Person personB = new Person("Steve", 5);  // ✅ 조립설명서 준수
		}
}

this 키워드

  • this 는 객체 자신을 가리키는 키워드이며 현재 실행 중인 객체를 의미한다.

기능(메서드)

  • 객체의 기능을 나열하는 곳이다.
  • 기능은 메서드로 표현한다.
  • 메서드를 활용하는 것이 객체의 기능을 활용하는 것이다.
class Person {
		...
		
		// ✅ 사람의 소개 기능
		void introduce() {
				System.out.println("안녕하세요.");
				System.out.println("나의 이름은 " + this.name + "입니다.");
				System.out.println("나이는 " + this.age + "입니다.");
		}
		
		// ✅ 사람의 더하기 기능
		int sum(int a, int b) {
				int result = a + b;
				return result;
		}
}
public class Main {

		public static void main(String[] args) {
				Person personA = new Person("gygim", 10);
				personA.introduce(); // ✅ personA 객체 introduce() 호출
				
				Person personB = new Person("Steve", 5);
		}
}

게터(getter)

  • 클래스의 속성을 가져올 때 사용되는 기능이다.
String getName() {
		return this.name;
}

int getAge() {
		return this.age;
}

String getAddress() {
		return this.address;
}
String name = person.getName();
int age = person.getAge();
String address = person.getAddress();

세터(setter)

  • 객체의 속성을 외부에서 설정할 수 있게 해주는 기능이다.
void getName(String name) {
		this.name = name;
}

void getAge(int age) {
		this.age = age;
}

void setAddress(String address) {
		this.address = address;
}
public class Main {

		public static void main(String[] args) {
				Person personA = new Person("gygim", 20);
				Person personB = new Person("Steve", 15);
				
				personA.setAddress("서울"); // ✅ personA 의 주소 설정
				personB.setAddress("미국"); // ✅ personA 의 주소 설정
				
		}
}

0개의 댓글