[Java] Java공부 3일차(3)

HwangHyoSang·2022년 7월 4일
0

java공부

목록 보기
6/6

유효범위(우효!!)

변수와 메소드의 이름은 사용할 수 있는 범위가 정해져 있다.

시스템적 혹은 라이브러리 내에서 이미 정의된 함수명을 사용할 경우 충돌이 발생할 수 있기 때문에, 이를 해결하기 위해서 유효범위라는 개념이 생겼다.

흔히 스코프(Scope)라고 부름

출현 배경

메소드, 클래스와 같은 개념들이 등장한 배경은 프로그램을 만드는 데 사용하는 코드의 양이 기하급수적으로 증가하면서 직면하게 되는 막장을 극복하기 위한 것이었다. 거대해진 코드를 효율적으로 제어하지 못한다면 웅장한 소프트웨어를 만드는 것은 점점 불가능한 일이 될 것이다. 유효범위라는 것도 그러한 맥락에서 등장한 개념이다. 하지만 유효범위는 메소드나 클래스처럼 특별한 문법적인 규칙을 가지고 있는 것은 아니다. 오히려 메소드나 클래스 안에 포함되어서 이러한 기능들의 부품으로서의 가치를 높여주는 역할을 한다고 할 수 있다.

라고함... 어렵다. 하지만 개념은 이해완료

유효범위 - 프로그램이 커지면 변수,메소드 이름이 겹칠 가능성이 있으므로, 해당 이름이 주는 영향의 범위를 제한.

ex) main안에서 선언된 int i는 main 영역 안에서만 영향(main안에서 호출된 메소드나 클래스에 직접적인 영향 x)

인스턴스 유효범위

class C3 {
    int v = 10;

    void m() {
        int v = 20;
        System.out.println(this.v);
        // this는 인스턴스 자신을 의미하므로
        //this.v = c1.v 라고 볼 수 있다.
    }
}

public class ScopeDemo9 {

    public static void main(String[] args) {
        C3 c1 = new C3();
        c1.m();
    }

}

생성자

생성자의 특징

생성자의 특징은 아래와 같이 정리할 수 있다.

값을 반환하지 않는다.

생성자는 인스턴스를 생성해주는 역할을 하는 특수한 메소드라고 할 수 있다. 

그런데 반환 값이 있다면 엉뚱한 객체가 생성될 것이다. 따라서 반환 값을 필요로하는 작업에서는 생성자를 사용하지 않는다. 

반환 값이 없기 때문에 return도 사용하지 않고, 반환 값을 메소드 정의에 포함시키지도 않는다.

생성자의 이름은 클래스의 이름과 동일하다.

자바에서 클래스의 이름과 동일한 메소드는 생성자로 사용하기로 약속되어 있다.

생성자 코드

public Calculator(int left, int right) {
    this.left = left;
    this.right = right;
}

호출 코드

Calculator c1 = new Calculator(10, 20);
profile
하루의 기억을 정리하는 기록장

0개의 댓글