Java 객체 / 클래스 / 인스턴스 / 메모리 공간

Codren·2021년 5월 29일

Section 1. Java 객체 개념

1. 객체 (Obect)

의사나 행위가 미치는 '대상'을 의미하며 구체적, 추상적 데이터의 단위 (학생, 회원, 주문, 배송 등)




2. 절차 지향 vs 객체 지향

  • 절차 지향 프로그램
    - 일어난다 -> 씻는다 -> 밥을 먹는다 -> 버스를 탄다-> 요금을 지불한다 -> 학교에 도착
  • 객체 지향 프로그래밍




3. 객체 지향 프로그래밍 구현

    ① 객체 정의
    ② 각 객체가 제공하는 기능들을 구현
    ③ 각 객체가 제공하는 기능들 간의 소통(메세지 전달)을 통하여 객체간의 통신 구현




Section 2. Java 클래스 개념

1. 클래스 (Class)

현실 세계의 객체 (Object)를 프로그래밍 상에서 구현하기 위한 설계도

  • '클래스' 라는 설계도를 실제로 구현한 객체 -> 인스턴스 (Instance)
  • 클래스 = 붕어빵 틀 기계  /  인스턴스 = 붕어빵



2. 클래스 규칙

  • 클래스는 대문자로 시작하는 것이 좋음
  • java 파일 하나에 클래스는 여러 개가 있을 수 있지만, public 클래스는 하나
  • public 클래스와 .java 파일의 이름은 동일해야 함



3. 클래스 정의 (선언)

  • 현실 세계의 학생이라는 객체를 클래스로 정의
  • 객체의 속성은 클래스의 멤버 변수로 선언 (자동 초기화)
  • 객체의 기능은 클래스의 멤버 함수(메서드)로 선언 (static 선언 시 객체 생성하지 않고도 접근 가능)
public class Student {

	int studentID;
	String studentName;
	int majorCode;
	String majorName;
	int grade;
    	String address;
        
        public void showStudentInfo() {
		System.out.println(studentName + "," + address);
	}
	
	public String getStudentName() {
		return studentName;
	}
}




4. 클래스 구현 (= 인스턴스 생성)

  • 클래스 이름을 데이터 타입으로 지정 (참조 자료형)
  • 객체 생성 new 연산자 (키워드) 사용
public class StudentTest {

	public static void main(String[] args) {
		
		Student studentHong = new Student();	# 인스턴스 1 (studentHong)
		studentLee.studentName = "홍길동";
		studentLee.address = "서울";
		
		studentLee.showStudentInfo();
		
		Student studentKim = new Student();	# 인스턴스 2 (studentKim)
		studentKim.studentName = "김유신";
		studentKim.address = "경주";
		
		studentKim.showStudentInfo();
		
		System.out.println(studentHong);
		System.out.println(studentKim);
	}
}



Section 3. Java 인스턴스 개념

1. 인스턴스(Instance)

클래스를 기반으로 실제로 구현한 객체를 의미하고 각각 고유의 멤버 변수 값을 소유

  • new 키워드를 사용하여 인스턴스 생성




2. 인스턴스와 메모리 공간

  • 생성된 인스턴스는 동적 메모리 영역 (heap memory) 에 할당됨
  • C / C++ 에서는 사용한 동적 메모리를 프로그래머가 해제 시켜야 함 ( free() / delete 이용)
  • 자바에서는 Gabage Collector 가 주기적으로 사용하지 않는 메모리를 수거
  • 하나의 클래스로 부터 여러 개의 인스턴스가 생성되고 고유의 메모리 주소를 가지게 됨

0개의 댓글