언어/Java
객체지향
아. 이렇게 하면 될거 같은데..
2024. 1. 16. 23:34
728x90
객체 : 주체가 아닌 것, 주체가 활용하는 것
객체 지향 프로그래밍 : 주변의 많은 것들을 객체화 해서 프로그래밍 하는것
객체 지향 언어의 특징
OOP is A P.I.E
- Abstraction(추상화)
- Polymorphism(다형성)
- Inheritance(상속)
- Encapsulation(데이터은닉과 보호)
객체지향 프로그래밍의 장점
- 신뢰성이 높은 프로그래밍이 가능하다.
- 추가/수정/삭제가 용이하다.
- 재 사용성이 높다
프로그램의 클래스와 객체
클래스
- 객체를 정의해 놓은 것 즉 객체의 설계도, 틀
- 클래스는 직접 사용할 수 없고 객체를 만들기 위한 틀을 제공할 뿐
객체
- 클래스를 데이터 타입으로 메모리에 생성되어 실제로 동작
객체 생성과 메모리
JVM의 메모리 구조
meta-space | stack | heap |
클래스의 정보 처리 - 타입정보 - Field 정보 - Method 정보 |
메서드들의 실행공간 - thread별로 별도 관리 - 메서드 호출 시 마다 메서드 프레임 적층 - 메서드 프레임에 로컬변수도 쌓이는 구조 |
객체를 저장하기 위한 영역 - thread에 의해 공유 - 객체가 생성되고 가비지컬렉션에 의해 정리됨 - 상수 풀 |
객체 생성과 메모리 할당
public static void main(String args[]){
Person p1 = new Person();
p1.name = "홍길동"; p1.isHungry = true;
System.out.println(p1.name+" : "+p1.isHungry);
p1.eat();
System.out.println(p1.name+" : "+p1.isHungry);
Person p2 = new Person();
p2.name = "임꺽정"; p2.isHungry = true;
System.out.println(p2.name+" : "+p2.isHungry);
System.out.println(p1.name+" : "+p1.isHungry);
}
- 메인메서드가 동작하면서 메모리 공간 할당
- 한줄 한줄 실행한다.
- Person타입의 p1을 선택하고 heap영역에서 참조
- 홍길동 = 참조 heap 영역의 name에 참조값 참조
- 중간에 eat() 메서드를 만나면 잠시 중단 후 eat메서드 실행
- 다시 돌아와서 Person p2객체 생성
728x90
반응형