2022/02/14 한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online.

김석진·2022년 2월 14일
0

(Constructor)

생성자

  • 객체를 생성할 때 new 키워드와 함께 사용 -ex) new Student();
  • 생성자는 일반 함수처럼 기능을 호출하는 것이 아니고 객체를 생성하기 위해 new와 함께 호출 됨
  • 객체가 생성될 때 변수나 상수를 초기화 하거나 다른 초기화 기능을 수행하는 메서드를 호출 함
  • 생성자는 반환 값이 없고, 클래스의 이름과 동일
  • 대부분의 생성자는 외부에서 접근 가능하지만, 필요에 의해 private(외부에서 접근 불가) 으로 선언되는 경우도 있다

기본 생성자(default contructor)

  • 클래스에는 반드시 적어도 하나 이상의 생성자가 존재 객체가 있고 객체를 생성해서 쓰는거기 때문에
  • 클래스에 생성자를 구현하지 않아도 new 키워드와 함께 생성자를 호출할 수 있음
  • 클래스에 생성자가 하나도 없는 경우 컴파일러가 생성자 코드를 넣어줌
  • 매개변수가 없음 , 구현부가 없음

여러가지 생성자를 정의하는 생성자 오버로딩(overloading)

오버로딩이란 메서드에서도 사용, 메서드 이름은 똑같고 매개변수가 다른경우 오버로딩 된다라고하고
오버로딩을 제공하는 이유는 사용하는사람의 편의성을 위해서 이다.

생성자 정의하기

  • 생성자를 구현해서 사용할 수 있음
  • 클래스에 생성자를 따로 구현하면 기본 생성자(default constructor)는 제공되지 않음
  • 생성자를 호출하는 코드(client)에서 여러 생성자 중 필요에 따라 호출해서 사용할 수 있음

참조 자료형 변수

참조 자료형

  • 변수 자료형

    • 기본 자료형 : int, long,float, double등
    • 참조 자료형 : String ,Date, Student등
  • 클래스형으로 변수를 선언

  • 기본 자료형은 사용하는 메모리의 크기가 정해져 있지만, 참조 자료형은 클래스에 따라 다름

  • 참조 자료형을 사용할 때는 해당 변수에 대해 생성하여야 함
    (String 클래스는 예외적으로 생성하지 않고 사용할 수 있음)

여러 인스턴스에서 공통으로 사용하는 변수- static 변수

공통으로 사용하는 변수가 필요한 경우

  • 여러 인스턴스가 공유하는 기준 값이 필요한 경우
  • 학생마다 새로운 학번 생성
  • 카드회사에서 카드를 새로 발급할때마다 새로운 카드 번호를 부여
  • 회사에 사원이 입사할때 마다 새로운 사번이 필요함

static 변수 선언과 사용하기

  • 인스턴스가 생성될 때 만들어지는 변수가 아닌, 처음 프로그램이 메모리에 로딩될 때 메모리를 할당
  • 클래스 변수, 정적변라고도 함(vs. 인스턴스 변수)
  • 인스턴스 생성과 솽관없이 사용 가능하므로 클래스 이름으로 직접 참조

static 변수 테스트하기

public class Employee {

    public static int serialNum=1000;

    private int employeeId;
    private String employeeName;
    private String department;

    public int getEmployeeId() {
        return employeeId;
    }

    public void setEmployeeId(int employeeId) {
        this.employeeId = employeeId;
    }

    public String getEmployeeName() {
        return employeeName;
    }

    public void setEmployeeName(String employeeName) {
        this.employeeName = employeeName;
    }

    public String getDepartment() {
        return department;
    }

    public void setDepartment(String department) {
        this.department = department;
    }
}

Test

public class EmployeeTest {
    public static void main(String[] args) {
        Employee employeeLee=new Employee();
        employeeLee.setEmployeeName("이순신");
        System.out.println(employeeLee.serialNum);

        Employee employeeKim=new Employee();
        employeeKim.setEmployeeName("김유신");
        employeeKim.serialNum++;
        System.out.println(employeeKim.serialNum);
        System.out.println(employeeLee.serialNum);
    }
}

실행결과

결론

static 변수는 인스턴스에서 공통으로 사용하는 영역임을 알 수 있다.

static 메서드의 구현과 활용, 변수의 유효 범위

profile
주니어 개발자 되고싶어요

0개의 댓글