[Java & SpringBoot로 시작하는 웹 프로그래밍] 2주차 학습 - 2 (생성자, 참조 자료형, 정보 은닉)

진문장·2021년 8월 7일
0

생성자(constructor)

  • 객체를 생성할 때 new 키워드와 함께 호출 (객체 생성 외에는 호출할 수 없음)
  • 인스턴스를 초기화 하는 코드가 구현 됨 (주로 멤버 변수 초기화)
  • 반환 값이 없음, 상속되지 않음
  • 생성자는 클래스 이름과 동일
class Person {
  private int idx;
  private int name;
  
  Person(int idx, int name) {
    this.idx = idx;
    this.name = name;
  }
}

기본 생성자

  • 하나의 클래스에는 반드시 하나 이상의 생성자가 존재해야 함
  • 프로그래머가 생성자를 구현하지 않으면 컴파일러가 생성자 코드를 넣어줌
  • 기본 생성자는 매개 변수가 없고, 구현부가 없음
  • 만약 클래스에 다른 생성자가 있는 경우 디폴트 생성자는 제공 되지 않음
/* 생성자를 선언하지 않아도 객체를 생성할 수 있다 */
class Person {
  private int idx;
  private int name;
}

--------------------

Person person = new Person(); // 기본 생성자

생성자 오버로딩

  • 생성자를 두 개 이상 구현하는 경우
  • 사용하는 코드에서 여러 생성자 중 선택하여 사용할 수 있음
  • private 변수도 생성자를 이용하여 초기화를 할 수 있음
class Person {
  private int idx;
  private int name;
  
  /* 기본 생성자 */
  Person() {} 
  
  /* 생성자2 */
  Person(int idx) {
    this.idx = idx;
  }
  
  /* 생성자3 */
  Person(int idx, int name) {
    this.idx = idx;
    this.name = name;
  }
}

참조 자료형(reference data type)

  • 변수의 자료형
    • 기본 자료형
      • int, long, float, double 등
    • 참조 자료형
      • String, Date, Person 등
  • 기본 자료형은 사용하는 메모리가 정해져 있지만, 참조 자료형은 클래스에 따라 다르다.

참조 자료형 직접 만들어 사용하기

  • 학생 클래스(Student)에 있는 과목 이름, 과목 성정 속성을
    과목(Subject) 클래스로 분리하고
    Subject 참조 자료형 멤버변수를 Student에 정의 하여 사용함
class Student {
  private int idx;
  private String name;
  private Subject korean;
  private Subject math;
}

class Subject {
  private String name;
  private int score;
}

접근 제어자

  • 변수, 메서드, 생성자에 대한 접근 권한 지정
  • public, private, protected, default
  • 각 접근 제어자마다 접근할 수 있는 범위가 있다.
    EX) private을 사용하면 클래스 외부에서는 접근 할 수 없음

정보 은닉(information hiding)

  • 외부에서 클래스 내부의 정보에 접근하지 못하도록 함
    private 키워드를 활용
  • private 변수를 외부에서 접근하게 하려면 public 메서드를 제공해야됨
    EX) getter
  • 클래스 내부 데이터를 잘못 사용하는 오률를 방지할 수 있음

0개의 댓글