JAVA에서 함수는 생성자함수밖에 없다

이동언·2024년 7월 16일

new world

목록 보기
2/62
post-thumbnail

7.9(화)

1. 생성자 함수

👉 클래스에 대한 필수적인 데이터를 지정하기 위한 함수


2. 매개변수가 없는 기본 생성자는?


👉기본적으로 클래스에 대한 생성자를 직접 생성할 수 있지만, 따로 생성해주지 않으면 컴파일러에서 자동으로 defualt 생성자를 생성해준다.


2-1. 생성자를 만든경우


👉Movie클래스에서 Movie라는 똑같은 메서드를 생성하는 것이 생성자이다. 이렇게 매개변수를 넣은 생성자를 만들어 놓게 되면 main 메서드에서는 Movie m1 = new Movie("해리포터", 12, 4, "A");처럼 매개변수를 넣은 인스턴스를 만들어줘야 한다.


2-2. 생성자를 만들지않은 기본생성자


👉 Movie클래스에서 위와 같은 생성자를 만들지 않으면 이 처럼 자바에서 자동으로 기본생성자를 만들어준다. 이럴 경우 main 메서드에서는 Movie m1 = new Movie();처럼 매개변수를 넣지 않은 인스턴스를 만들어야 한다.


3. 생성자함수에는 왜 리턴타입이 없을까?

👉 생성자함수는 Menu()와 같은 리모컨을 return 해야 하는데, return값을 만들 수 있는 소스코드 부분이 있으면 return을 해줘야 하는 값이 꼬여버리기 때문에 생성자 함수에서는 return 값을 별도로 지정할 수 없다.

📌함수라는것은 빠져나오는 y값이 동일해야 하는데 다른 java의 메소드 들은 return값이 항상 다르므로 함수가 아닌 메소드 이기 때문에 생성자함수만 함수이다.


4. 배열 내부 생성자

LottoBall[] balls = new LottoBall[45];
   
   for (int i = 0; i < balls.length; i++) {
       balls[i] = i+1;
   } 

👉 해당 코드는 오류가 발생한다.
balls 라는 변수는 LottoBall이라는 데이터타입을 가지고있는데 balls[i] = i+1 에서
i+1은 int타입이므로 LottoBall에 맞는 타입을 넣어줘야한다.

  LottoBall[] balls = new LottoBall[45];
   for (int i = 0; i < balls.length; i++) {
       balls[i] = new LottoBall(i+1);
   }
   SOUT(Arrays.toString(balls));

👉 해당 코드는 오류가 발생하지 않는다.
쉽게 설명하자면 balls의 각 상자안에 LottoBall이라는 리모컨을 넣는것이다.
즉 객체를 넣어줘야 한다.
해당 내용을 출력하게 되면 LottoBall의 각 주소값이 출력된다.
ex) [LottoBall 1, LottoBall 2, ….]


5. if문 / 삼항연산자

  • if제어문과 삼항연산자의 차이점
    🌳 if제어문 : 결과가 꼭 없어도 오류가 발생하지 않는다.
    🌳 삼항연산자 : 반드시 변수를 만들어서 값을 담아야 한다.


6. if/else문 vs switch문

👉 if/else문은 각 if 및 else마다 차곡차곡 비교를 하면서 내려가고,
     switch문은 bytecode에서도 case를 분리하여 선택되기 때문에 if/else문 보다 빠르다.


0개의 댓글