사이먼's 코딩노트

[Java] 생성자 문제풀이 본문

Java/Java

[Java] 생성자 문제풀이

simonpark817 2024. 3. 12. 21:44
  • Java 생성자와 관련된 문제를 풀어봅시다.
  • Main 메서드에 작성된 코드를 보고 나머지 클래스와 메서드를 작성해봅시다.

 

[문제 1]

  • 아래 코드를 보고 계산기 객체가 더하는 기능의 옵션을 3가지 이상 가지도록 코드를 완성해봅시다.
public class Main {
    public static void main(String[] args) {
        계산기 a계산기 = new 계산기();

        System.out.println(a계산기.더하기(10, 20));
        // 출력 : 30

        System.out.println(a계산기.더하기(10, 20, 30));
        // 출력 : 60

        System.out.println(a계산기.더하기(10.5, 20, 30));
        // 출력 : 60.5
    }
}

 

[문제 1 정답]

public class Main {
    public static void main(String[] args) {
        계산기 a계산기 = new 계산기();

        System.out.println(a계산기.더하기(10, 20));
        // 출력 : 30

        System.out.println(a계산기.더하기(10, 20, 30));
        // 출력 : 60

        System.out.println(a계산기.더하기(10.5, 20, 30));
        // 출력 : 60.5
    }
}

class 계산기 {
    int 더하기(int a, int b) {
        return a + b;
    }
    int 더하기(int a, int b, int c) {
        return a + b + c;
    }
    double 더하기(double a, int b, int c) {
        return a + b + c;
    }
}
  • Main 메서드를 살펴보면 new 계산기() 를 통해 객체 하나를 생성하였고 계산기는 더하기() 라는 메서드를 가지고있다.
  • 여기서 더하기() 메서드는 서로 다른 인자 값을 넘겨주고 있다.
  • 첫번째 더하기() 에서는 정수 2개, 두번째 더하기() 는 정수 3개, 세번째 더하기() 는 실수 1개와 정수 2개를 인자 값으로 넘겨주고 있다.
  • 이 때는 더하기() 하나의 메서드를 쓰는 것이 아니라 각 인자 타입에 맞게 매개변수를 다르게 써서 메서드 오버로딩을 해줘야한다.
  • 주의할 점은 실수로 되어있는 부분은 매개변수 타입이 double로 되어야하고 메서드 자체의 타입도 실수를 return 해야되기 때문에 double로 작성해야한다.

 

 

[문제 2]

  • 아래 코드를 보고 다음의 질문에 서술형으로 대답해봅시다.
public class Main {
    public static void main(String[] args) {
        System.out.println("Hello world!");
    }
}

class 사람 {

}
  1. 사람 클래스 안에 있는 생성자의 개수는?
  2. 사람 클래스의 부모 클래스는?
  3. 사람 클래스의 부모 클래스에 생성자가 1개 있다고 가정할 때 사람 클래스 안에 있는 생성자의 총 개수는?

 

[문제 2 정답]

  1. 사람 클래스 안에 있는 생성자의 개수는? (알 수 없음)
  2. 사람 클래스의 부모 클래스는? (Object 클래스)
  3. 사람 클래스의 부모 클래스에 생성자가 1개 있다고 가정할 때 사람 클래스 안에 있는 생성자의 총 개수는? (2개)
  • 모든 클래스는 생성과 동시에 자기 자신의 생성자를 하나씩 가지고 태어난다.
  • 사람 클래스는 사람() 이라는 생성자를 하나 가지고 있다.
  • 하지만, 모든 클래스는 Object 라는 클래스의 자식 클래스이다.
  • 다시 말해서 Object 클래스는 Java의 최상위 클래스이다.
  • 즉, 위 코드에서 [class 사람 {}] == [class 사람 extends Object {}]의 약어라고 봐도 좋다.
  • Object 클래스도 마찬가지로 자기 자신의 생성자가 하나 있지만 그 외의 생성자가 추가로 있을 수도 있기 때문에 사람 클래스 안에 있는 생성자의 개수는 자기 자신의 생성자만 생각했을 때는 1개라는 답도 괜찮지만 엄밀히 따지면 알 수 없음이 정확하다.
  • 사람 클래스의 부모 클래스가 Object라는 사실을 알게되고, 만약 해당 부모 클래스에 생성자가 1개가 있다고 가정을 한다면 사람 클래스 안에는 Object() 와 사람() 생성자 2개가 있다는 것을 알 수 있다.

 

반응형

'Java > Java' 카테고리의 다른 글

[Java] static  (0) 2024.03.12
[Java] super / final / switch  (0) 2024.03.12
[Java] 문제풀이(2)  (0) 2024.03.11
[Java] 문제풀이(1)  (0) 2024.03.11
[Java] ArrayList  (0) 2024.02.19