[자바인강] 3주차 학습일지

Jae·2022년 4월 12일
0

Java 학습일지

목록 보기
3/8

09. 참조 자료형 변수

변수의 자료형

기본 자료형
-> int, long, float, double 등
-> 사용하는 메모리가 정해져 있는 자료형

참조 자료형
-> String, Date, Student 등
-> 클래스를 타입으로 변수를 선언하는 자료형
-> 클래스에 따라 할당되는 메모리가 다르다.

참조 자료형 구현 예시

10. 접근 제어 지시자 & 정보은닉

접근 제어 지시자 (access modifier)

  • 클래스 외부에서 클래스 내부의 것을 사용할 수 있는지 여부를 지정하는 키워드

    public : 클래스 외부 어디서나 -> 접근 가능
    protected : 같은 패키지, 상속관계의 클래스에서만 -> 접근 가능
    default (아무 것도 적지 않음) : 같은 패키지 내부에서만 -> 접근 가능
    (상속 관계 클래스에서도 패키지가 다르면 접근 불가)
    private : 같은 클래스 내부에서만 -> 접근 가능
    (외부 및 상속 관계 클래스에서도 접근 불가)

get/set 메서드 => private을 유용하게

  • private로 선언된 멤버 변수(필드)에 접근, 수정할 수 있는 메서드를 public으로 제공한다.
  • get() 메서드만 제공 되면 = read만 가능하다.

정보은닉 (information hiding)

public 메서드로 private 변수를 제어 가능하다.
-> 멤버 변수의 오용, 객체의 오류를 막기 위해 사용한다.
-> 디버깅 시에도 편리하다.
// isValid = true 왜 쓴다고?

11. 캡슐화 (encapsulation)

정보은닉을 활용한 캡슐화

  • 필요한 정보와 기능만 외부에 오픈한다.
  • 대부분의 멤버 변수와 메서드를 감춘다.
    하지만 외부에 통합된 인터페이스는 제공한다.
  • 오류의 최소화. 디버깅이 편리하다.

12. this

this의 역할

  • 인스턴스 스스로의 메모리를 가리킨다.
  • 생성자에서 다른 생성자를 호출할 때 사용한다.
  • 자신의 주소를 반환한다.

13. 객체 간의 협력

Collaboration

  • 객체 간에는 협력이 이루어진다.
  • 매개 변수로 객체가 전달되는 경우가 발생한다.

15. 객체 협력 예제

택시를 타고자 하는 Jin과 Kim.
택시 회사는 기아택시와 테슬라택시가 있다.
이들이 택시를 탔을 때, 이들의 잔고와 택시 회사의 잔고를 구현하고자 한다.

16. static 변수

static 변수 = 여러 인스턴스의 공통 변수

  • 여러개의 인스턴스가 공유할 수 있는 변수이다.
  • 예시 - 학번, 카드 번호, 사번 등등

static 변수 선언과 사용

  • 처음 프로그램이 메모리에 로딩될 때 메모리를 할당한다.
  • 클래스 변수, 정적 변수라고도 한다.
  • 인스턴스 생성과 관련 없이 사용 가능하다. 따라서 클래스 이름으로 직접 참조.

17. static 메소드

static 메소드 (클래스 메소드)

  • 인스턴스 변수를 사용할 수 없다.

static 메소드 구현

  • static 변수를 private로 선언하고 getter/setter로 구현한다.

변수의 유효범위와 메모리

  • 변수의 종류에 따라서 유효범위(scope)와 생성-소멸 사이클(life cycle)은 다르다.
  • static 변수에 큰 메모리를 할당하는 것은 좋지 않다.
  • 클래스에서 여러 메소드에 사용하는 변수는 멤버 변수로 선언하는 것이 좋다.

18. 싱글톤 패턴

싱글톤 패턴 (Singleton Pattern)

  • 디자인패턴
  • 프로그램에서 인스턴스가 단 한개만 생성되어야 하는 경우 사용한다.
  • static 변수, 메소드를 활용하여 구현할 수 있다.

싱글톤 패턴 예제 (회사 객체 구현하기)

  • 생성자는 private로 선언한다.
private Company() {}
  • 클래스 내부에 유일한 private 인스턴스를 생성한다.
private static Company instance = new Company();
  • 외부에서 유일한 인스턴스를 참조할 수 있는 public 메소드 제공
public static Company getInstance() {
	if(instance == null) {
    	instance = new Company();
    }
    return instance;
}

20. 배열

배열(array)

  • 동일한 자료형의 순차적 자료구조
  • 인덱스 연산자 "[]"를 이용하여 빠른 참조가 가능하다.
  • 물리적 위치와 논리적 위치가 동일하다.
  • 배열의 순서는 0부터 시작한다. (0부터 n-1까지 존재한다.)

배열 선언과 초기화

int[] arr1 = new int[10];
int arr2[] = new int[10];

profile
Jae's Development Area : 재개발구역

0개의 댓글