반응형
1. 추상화
-
객체의 핵심적인 특성들을 묶어 재조합(모델링)하는 것
-
핵심적 = 공통적 = 필수적 = 내가 관심있는
-
어플리케이션의 성격에 따라 추상화가 달라질 수 있음
-
사람을 예로 들었을 때
-
헬스장 어플리케이션
사람 ======== 이름 키 몸무게 골격근량 체지방량 ======== 먹다() 말하다() 결제하다() 운동하다() 씻다()
-
은행 어플리케이션
사람 ======== 이름 나이 직업 연봉 신용도 ======== 말하다() 입금하다() 출금하다() 이체하다() 대출하다()
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 |