java 17

산야(Sanya)·2024년 1월 19일

java 족보

목록 보기
18/28

1. Object 클래스란?

  • Object 클래스는 자바의 모든 클래스의 최상위 클래스입니다⁹¹¹¹². 이 클래스는 필드를 가지지 않으며, 총 11개의 메소드만으로 구성되어 있습니다¹¹. 자바에서 제공하는 모든 클래스들은 계층 구조로 되어있고, 그 최상위로 올라가면 Object 라는 클래스가 존재합니다⁹. 따라서 자바의 모든 클래스는 Object 클래스의 모든 메소드를 바로 사용할 수 있습니다⁹.

2. 아래의 소스코드에 대하여 아래와 같이 출력되는 이유는?

  • System.out.println(a);에서 aA 클래스의 인스턴스입니다. println 메소드는 인자로 주어진 객체의 toString 메소드를 호출하여 그 결과를 출력합니다. A 클래스는 toString 메소드를 오버라이드하지 않았으므로, Object 클래스의 toString 메소드가 호출됩니다. Object 클래스의 toString 메소드는 객체의 클래스 이름, @ 기호, 그리고 16진수 해시코드를 반환합니다⁹. 따라서 A@28a418fc라는 결과가 출력된 것입니다.

3. class이름 및 함수에서 final의 의미는?

  • final 키워드는 마지막이라는 의미를 가지며, final이 붙은 요소는 초기화 이후에 수정할 수 없습니다²¹. final은 변수, 메서드, 클래스에 부여할 수 있으며, 어느 위치에 선언되는지에 따라 기능이 달라집니다²¹. final이 붙은 클래스는 상속을 받을 수 없으며, final이 붙은 메서드는 오버라이드할 수 없습니다¹⁹.

4. @Override 에 대하여 설명하시오.

  • @Override 어노테이션은 자식 클래스의 메서드가 부모 클래스의 메서드를 오버라이드한다는 것을 명시적으로 선언하는 데 사용됩니다¹⁴¹⁶. 이 어노테이션은 컴파일러에게 해당 메서드가 부모 클래스의 메서드를 정확하게 오버라이드하는지 확인하도록 요청합니다¹⁵¹⁸. 이를 통해 실수로 메서드 시그니처를 잘못 작성하는 등의 오류를 방지할 수 있습니다¹⁵.

5. 아래의 결과가 나오도록 프로그래밍 하시오.

public static void main(String[] args) {

Object obj = new Circle(10);
System.out.println(obj);
}

//출력: 넓이는 314.134 입니다.

class Circle {
    private double radius;
    private final double PI = 3.141592653589793;

    public Circle(double radius) {
        this.radius = radius;
    }

    public double getArea() {
        return PI * radius * radius;
    }

    @Override
    public String toString() {
        return "넓이는 " + getArea() + " 입니다.";
    }
}

public class Main {
    public static void main(String[] args) {
        Object obj = new Circle(10);
        System.out.println(obj);
    }
}

이 코드는 Circle 클래스의 인스턴스를 생성하고, 이 인스턴스의 toString 메소드를 호출하여 원의 넓이를 출력합니다. Circle 클래스의 toString 메소드는 원의 넓이를 계산하여 "넓이는 314.1592653589793 입니다."라는 문자열을 반환합니다.

profile
개발일지

0개의 댓글