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

Codren·2021년 5월 29일
0
post-custom-banner

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 가 주기적으로 사용하지 않는 메모리를 수거
  • 하나의 클래스로 부터 여러 개의 인스턴스가 생성되고 고유의 메모리 주소를 가지게 됨

post-custom-banner

0개의 댓글