비트캠프/학습점검목록정리

231218 클래스변수, 로컬변수, 상속,

보더96 2023. 12. 18. 19:27

★ SOLID 원칙

★ GRASP 설계 기법

★ GoF의  Design Patterns 실용 설계 기법

 

 

 

필드데이터

 

 

 

 

 

클래스 변수 = 스태틱 필드   =>   static int a;

==> 스태틱영역에서   loading되어   Method Area에 들어간다.

 

   static 필드 = 클래스 필드(변수)
   - 클래스를 로딩할 때 Method Area 영역에 생성된다.
   - 클래스는 단 한 번만 로딩된다.
   - 따라서 스태틱 변수도 한 번만 생성된다.
   - JVM을 종료할 때 메모리에서 한꺼번에 제거된다.

 

 

 

메서드안에 선언된 변수  =  로컬 변수  =>   int b;   (초기화 시키는 것)

==> 논스태틱 필드에서  new로 되어   Heap 메모리에 저장된다.

 

   non-static 필드 = 인스턴스 필드
   - new 연산자를 실행할 때 Heap 영역에 생성된다.
   - new 연산자를 실행할 때마다 생성된다.
   - Garbage Collector에 의해 인스턴스가 해제될 때 제거된다.

 

 

 결론!
 클래스 메서드(=스태틱 메서드)
   => 인스턴스 변수를 사용하지 않을 경우 클래스 메서드로 선언하라!
 인스턴스 메서드
   => 인스턴스 변수를 사용할 경우 인스턴스 메서드로 선언하라!

 실무
 => 일단 인스턴스 메서드로 무조건 만들라!
 => 인스턴스 변수를 완전히 사용하지 않음을 확신하면
    그 때 클래스 메서드로 전환하라!

 

 

 

 

 

레퍼런스 배열

100번지, 200번지, 300번지가 있으면 이 번지 배열을 레퍼런스 배열이라고 한다.

인스턴스 객체가 모여 레퍼런스 배열이 된다!!

 

번지안에 name, title, content,deadline 등이 있는데 이것을 인스턴스 배열이라고 한다.

 

 

 

 

 

변수종류 참고하기!!

 

 

★로컬변수  =  변수를 생성하라는 명령문, 변수 초기화를 해준다.

 

★기능 추가  -  기존 코드를 손대지 않고 추가 / 변경   ( 상속 extends )

특징!

  - 기존 코드의 소스 파일이 필요 없다.

  - 기존 코드를 변경하면 상속 받는 모든 서브 클래스에 바로 적용된다.

 

상속을 사용하지 않으면!!

  - 기존 클래스에 추가를 하게 되면 전체 코드를 변경해야 하는 일이 생길수 있다. 

  - 코드가 점점 누더기가 되어간다.

  - 기존 코드에 대한 소스파일이 있어야 한다.

 

 

★final 을 붙여주면 변수가 아니라 고정값이 된다!!

 

★ex03 은 생성자 관련

 

 

 

ex03 완료