728x90




객체지향 프로그램에서 좋은 점
 - 유연성, 확장성이 좋다.
   (테스트를 끝낸 코드는 다시 건드리지 않아도 된다는 점)

상위 클래스 : 추상적
하위 클래스 : 구체적

오버라이드(override) : 하위클래스에서 메소드의 역할을 변경하거나 확장할 필요가 있을 때 상속받은 메소드를 새로 정의 하는 것

객체 구성 요소
1) 객체에서 자신에 대해 아는 것 = 인스턴스 변수 = 상태(데이터)
 - 인스턴스(instance)란 객체(object)를 부르는 다른 이름이라고 생각
2) 객체에서 자신이 하는 것 = 메소드 = 행동

Class Movie {
  String title;
  String genre;

  void playIt()
  {
    System.out.println("영화를 상영합니다");
  }
}
위에 Movie 클래스에서 title, genre는 인스턴스 변수이고, playIt()은 메소드 이다.

클래스와 객체 사이의 차이점
1) 클래스는 객체가 아니다. 객체를 만들기 위한 용도로 쓰여진다.
- 가상머신에 그 유형의 객체를 만드는 방법을 알려주는 역할
- 클래스로 만들어진 객체는 클래스의 인스턴스 변수용으로 쓰기 위한 변수를 가질 수 있다.

main 메소드의 두 가지 용도
- 클래스를 테스트 하기 위한 용도
- 자바 애플리케이션을 시작하기 위한 용도
* 자바 애플리케이션이란 객체가 다른 개체와 대화하는 것에 불과하다.

자바는 청소도 알아서 한다.
1) 자바 객체가 생성되면 힙(Heap)이라는 메모리 공간에 저장
- 모든 객체는 언제, 어디서, 어떻게 만들어졌든 상관없이 힙에서 산다.
2) 자바의 힙은 가비지 컬렉션 기능이 있다.
- JVM에서 어떤 객체가 절대로 다시 쓰이지 않을 것이라는 결론을 내릴 수 있으면 그 객체는 가비지 컬렉션 대상이 된다.
- 메모리가 모자라게 되면 가비지 컬렉터가 작동함변서 더 이상 사용할 수 없는 객체를 치워버려 재활용할 수 있는 메모리 공간을 확보한다.




728x90

+ Recent posts