언어/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);
}
  1. 메인메서드가 동작하면서 메모리 공간 할당
  2. 한줄 한줄 실행한다.
  3. Person타입의 p1을 선택하고 heap영역에서 참조
  4. 홍길동 = 참조 heap 영역의 name에 참조값 참조
  5. 중간에 eat() 메서드를 만나면 잠시 중단 후 eat메서드 실행
  6. 다시 돌아와서 Person p2객체 생성

 

728x90
반응형