회고록 블로그

[자료구조] 네이버 부스트코스 '자바로 구현하고 배우는 자료구조' 공부 필기 (3) 본문

3. Computer Science 공부/자료구조

[자료구조] 네이버 부스트코스 '자바로 구현하고 배우는 자료구조' 공부 필기 (3)

김간장 2021. 11. 22. 23:13

매일 강의를 듣지는 못했지만 아직 자료구조 공부를 포기하지는 않았다..ㅠ

 

출처 강의 : '자바로 구현하고 배우는 자료구조', Rob Edwards, https://www.boostcourse.org/cs204/joinLectures/145114

 

자바로 구현하고 배우는 자료구조

부스트코스 무료 강의

www.boostcourse.org

 

※ 강의 들으며, 개인적으로 필요한 내용만 필기함


1. 객체지향 프로그래밍

 

[개요]

- 자료구조 본격 공부하기 전, 객체지향 프로그래밍 복습

- 상속과 클래스 복습

 

[내용]

- Object Oriented Programming 복습

- int는 4byte, short는 2byte, long은 8byte의 공간을 메모리에 할당함

 

- 여기 Student라는 객체가 생성되었음

// Person 클래스
class Person {...}

// Student 클래스
class Student extends Person {...}

// 메인메소드
Student s = new Student();

- 이때, s는 얼마의 메모리를 사용할까

   → 객체 종류에 따라 다르지만, 여기에서는 JVM이 4byte의 블록을 가지고 참조변수 s의 공간을 만듦

- 그리고 이 4byte는 힙에 있는 공간을 가리키게 됨(= 참조)

- 이 힙 공간에는 Student와 관련된 정보들이 저장됨

   → (상속 객체가 무엇이 있고 얼마의 크기가 필요한지 등) Student 객체를 만드는데 메모리가 얼마나 필요한지 계산한 후에 힙에 공간이 만들어짐

 

 

- Inheritence & Classes 복습

// Person 클래스
class Person {...}

// Student 클래스
class Student extends Person {...}

// 메인메소드
Student s = new Student();

- JVM은 자식 클래스 Student가 부모 클래스 Person을 상속한다는 것을 알아채고

   부모 클래스 Person의 변수와 메소드를 모두 가져와 Student 클래스의 정보와 함께 힙에 저장해둠

 

- 어떤 프로그래밍 언어는 다중 상속을 허용하지만, 자바는 다중 상속을 허용하지 않기 때문에 부모 클래스는 하나밖에 존재하지 않음

 

- 상속 관계는 트리 형태로 아래와 같이 표현할 수 있음

[그림1]

   → Elementary는 School의 정보를 갖고 있고 School은 Organization의 정보를 갖고 있음

         즉, Elementary는 자기자신(Elementary)과 School, Organization의 정보를 모두 갖고 있음

   → Elementary는 (Company의 자식 클래스인) IT의 정보를 가질 수 없음

- 즉, 위의 트리는 올라가는 것만 할 수 있음 (= 상속받는 클래스 정보만 갖고 있을 수 있음)

 

 

- 상속 관계와 변수의 형변환

- 아래 코드는 컴파일 되지 않는 코드

Elementary e = new School(); // 불가능

   → School과 Organization의 정보 크기를 계산한 후 힙 영역에 저장함

   → 이때 Elementary 클래스의 정보는 포함되지 않음

   → 그러다보니 School과 Organization 정보에만 접근할 수 있고 Elementary 클래스의 내용에는 접근할 수 없음

   → 결과적으로 컴파일이 되지 않음

- 이 객체에 대해서 힙에 충분한 공간이 할당되지 않기 때문

 

 

Comments