[14일차] 04.객체의 속성은 멤버 변수로, 객체의 기능은 메서드로 구현한다 / 05.인스턴스 생성과 힙 메모리

WOOJEON JANG·2022년 1월 12일
0

Part02. 객체지향 프로그래밍
ch 02. 객체지향 입문

04.객체의 속성은 멤버 변수로, 객체의 기능은 메서드로 구현한다🩸

<학생 클래스를 정의 하고 이를 사용해 보자>

  • 학생 클래스의 속성을 멤버 변수로 선언하고 메서드를 구현한다
package ch04;

public class Student {
	
	public int studentID;
	public String studentName;
	public String address; 
	
	public void showStudentInfo() {
		System.out.println( studentID + "학번인 학생의 이름은 " + studentName + " 이고, 거주지는 " + address + "입니다.");
	} //여기까지 class의 속성을 만들어주는 것
	
	public String getStudentName() {
		return studentName;
	}
	
	public void setStudentName( String name) {
		studentName = name;
	}
} //여기까지 메서드를 만들어주는 부분



  • class를 생성하기
package ch04;

public class StudentTest {

	public static void main(String[] args) {
		
		Student studentwjj = new Student(); //studentwjj은 참조변수라고 부른다. 참조변수의 역할은 생성되는 곳의 메모리 위치를 나타냄. 이것을 통해 메서드나 변수 호출함(아래)
		
		studentwjj.studentID = 69313274;
		studentwjj.setStudentName("JANG WOO JEON");
		studentwjj.address = "서울시 강남구";
		
		studentwjj.showStudentInfo();



  • 학생 클래스를 생성하고 생성된 객체(인스턴스)에 각각 다른 이름과 주소를 대입 - > 출력 결과

오늘의 공부 소감(04.) :
너무 이해가 안되서 강의를 8번 정도 돌려보고 이해가 되었다.....







05.인스턴스 생성과 힙 메모리 🦠

<인스턴스(instance)>

  • 클래스는 객체의 속성을 정의하고, 기능을 구현하여 만들어 놓은 코드 상태
  • 실제 클래스 기반으로 생성된 객체(인스턴스)는 각각 다른 멤버 변수 값을 가지게 됨. ex)학생의 클래스에서 생성된 각각의 인스턴스는 각각 다른 이름, 학번, 학년 등의 값을 가지게 됨
  • new 키워드를 사용하여 인스턴스 생성



<힙 메모리>

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

public class StudentTest {

	public static void main(String[] args) {
		
		Student studentwjj = new Student();
		
		studentwjj.studentID = 69313274;
		studentwjj.setStudentName("JANG WOO JEON");
		studentwjj.address = "서울시 강남구"; //studentwjj. 뒤에 오는 것들을 각각 다른 메모리에 위치하며, 그렇기 때문에 각각 다른 값을 줄 수 있는 것이다. 다시말해, class는 하나지만 그 안의 instance는 여러개일 수 있다.(그 instance는 heap이라는 동적메모리에 할당된다)
		
		studentwjj.showStudentInfo();
		
	}

}



<참조 변수, 참조 값>

ch04.Studentwjj@49476842

  • ch04.Studentwj : 패키지 이름, 클래스 풀네임
  • @49476842 : 주소값(참조값reference value) Studentwjj이 자리잡은 주소를 의미함



<용어 정리>

객체 : 객체 지향 프로그램의 대상, 생성된 인스턴스
클래스 : 객체를 프로그래밍하기 위해 코드로 정의해 놓은 상태
인스턴스 : new 키워드를 사용하여 클래스를 메모리에 생성한 상태
멤버변수 : 클래스의 속성, 특성
메서드 : 멤버 변수를 이용하여 클래스의 기능을 구현한 함수
참조변수 : 메모리에 생성된 인스턴스를 가리키는 변수
참조 값 : 생성된 인스턴스의 메모리 주소 값

오늘의 공부 소감(05.) :
아직 너무나 생소하다...........

profile
back-end enginneer

0개의 댓글