본문 바로가기
Java

[Java] 추상화

by foreverever 2019. 5. 2.
반응형

1. 추상화

  • 객체의 핵심적인 특성들을 묶어 재조합(모델링)하는 것

  • 핵심적 = 공통적 = 필수적 = 내가 관심있는

  • 어플리케이션의 성격에 따라 추상화가 달라질 수 있음

  • 사람을 예로 들었을 때

  1. 헬스장 어플리케이션

    사람
    ========
    이름
    키
    몸무게
    골격근량
    체지방량
    ========
    먹다()
    말하다()
    결제하다()
    운동하다()
    씻다()
  2. 은행 어플리케이션

    사람
    ========
    이름
    나이
    직업
    연봉
    신용도
    ========
    말하다()
    입금하다()
    출금하다()
    이체하다()
    대출하다()

2. 자바에서 추상화는 무엇으로 표현하는가?

  • Class

3. 사람의 기본적인 특성을 가지고 추상화 해보자

사람
========
이름
나이
키
========
말하다()

사람은 '이름', '나이', '키'라는 속성을 가지고 있으며, '말하다'라는 행위를 할 수 있다.

 

  • Person
public class Person {
    private String name;
    private int age;
    private double height;

    public Person(String name, int age, double height) {
        this.name = name;
        this.age = age;
        this.height = height;
    }

    public void talk(){
        System.out.println(name + " : 안녕하세요!");
    }
}

 

  • PersonDriver
public class PersonDriver {
    public static void main(String[] args) {
        Person chulsoo = new Person("철수",20, 182);

        chulsoo.talk();   //철수 : 안녕하세요!
        chulsoo = null;


        Person younghee = new Person("영희", 20, 167);

        younghee.talk();    //영희 : 안녕하세요!
    }
}

 

  • '철수'라는 객체의 T메모리 상태

 

1. stack영역의 main스택 프레임에 chulsoo 변수는 heap영역의 Person객체의 주소값(참조)을 가지고 있다.

2. chlusoo 변수가 null값을 가지게 되면(chulsoo=null;), heap영역의 객체는 더 이상 참조되지 않으므로, GC가 삭제한다.

3. stack영역은 함수가 종료될 때, static영역은 프로그램이 종료될 때 사라진다.

반응형

'Java' 카테고리의 다른 글

[Java] String = "" / String = new String("") 비교  (0) 2020.02.15
[Java] 상속  (1) 2019.05.05
[Java] JVM(Java Virtual Machine)  (0) 2019.04.28
[Java] 자바 프로그램 구동 및 실행 과정  (1) 2019.04.27
[Java] 클래스 vs 객체  (4) 2019.04.22