Archives
Recent Posts
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
관리 메뉴

개발도생's Blog

[8Days] Study_Static&Constructor 본문

개발자의 일기/Study

[8Days] Study_Static&Constructor

개발도생 2023. 3. 22. 13:59

오늘은 'static' 키워드와 생성자(Constructor)에 대해서 공부해 봤다.

 

'static' 키워드란,

클래스를 정의할 때 'static 키워드'를 사용한 프로퍼티와 메서드는

 

해당 클래스의 인스턴스를 생성하지 않아도 접근할 수 있게 된다.

 

이러한 프로퍼티와 메서드를 정적 멤버(static member)라고 한다.

 

※예시

public class StaticClass {
	
	public static int test = 10;

}
public class TestClass {
	public static void main(String[] args) {
		System.out.println(StaticTest.test);
	}
}

결과 값

 

조금 더 쉽게 표현해 본다면,

 

같은 타입의 여러 객체가 공유할 목적의 필드에서 사용한다.

 

프로그램이 시작(작동)할 때 정적 메모리 영역에 자동으로 할당되는 멤버에 적용되는 것이다.

 

정적 멤버의 특징으로는,

1. 'static' 키워드로 선언된 정적 프로퍼티는 인스턴스화된 객체에서는 접근할 수 없다.

2. 'static' 키워드로 선언된 정적 메서드는 인스턴스화된 객체에서도 접근할 수 있다.

3. 정적 메서드 내에서는 $this 의사 변수를 사용할 수 없다.

 


static 키워드 표현식

Class를 설계할 때 'static'을 사용하기 위해서,

1. 클래스의 멤버변수 중 모든 인스턴스에 공통된 값을 유지해야 하는 것이 있는지

살펴보고, 있으면 static을 붙여준다.

2. 작성한 메서드 중에서 인스턴스 변수를 사용하지 않는 메서드에 대해서 static을

붙일 것을 고려한다.

public class Static {
	public static int test;
}

 


생성자(Constructor)란,

자바에서는 객체의 생성과 동시에 인스턴스 변수를 원하는 값으로

 

초기화할 수 있는 생성자(Constructor)라는 메서드를 제공한다.

 

모든 클래스는 생성자가 반드시 존재하며, 하나 이상을 가질 수 있다.

 

생성자의 특징으로는

1. 생성자의 이름은 클래스 이름과 동일해야 합니다.

 

2. 생성자는 클래스에 최소 1개는 있어야 하며, 생성자 코드가 없을 경우 컴파일러가 기본생성자를 자동으로 생성합니다. 

(사용자가 확인할 수 없는 이유는 생략이 되어 있기 때문이다.)

 

3. 생성자는 반환값이 없지만, 반환 타입을 void형으로 선언하지 않는다.

 

4. 생성자는 초기화를 위한 데이터를 인수로 전달받을 수 있다.

 

5. 객체를 초기화하는 방법이 여러 개 존재할 경우에는 하나의 클래스가 여러 개의 생성자를 가질 수 있습니다.

즉, 생성자도 하나의 메서드이므로, 메서드 '오버로딩'이 가능하다는 의미입니다.

오버로딩(Overloading)
→ 같은 이름의 메서드를 중복하여 정의하는 것을 의미한다.
→ 자바에서는 원래 한 클래스 내에 같은 이름의 메서드를 둘 이상 가질 수 없다.
→ 매개변수의 개수나 타입을 다르게 하면, 하나의 이름으로 메서드를 작성할 수 있다.
→ 메서드 오버로딩을 사용함으로써 메서드에 사용되는 이름을 절약할 수 있습니다.

 

생성자의 선언

기본 생성자

자바의 모든 클래스에는 하나 이상의 생성자가 정의되어 있어야 한다.

 

하지만 특별히 생성자를 정의하지 않고도 인스턴스를 생성할 수 있다.

 

이것은 자바 컴파일러가 기본 생성자(default constructor)라는 것을 기본적으로 제공해 주기 때문이다.

 

기본 생성자는 매개변수를 하나도 가지지 않으며, 아무런 명령어도 포함하고 있지 않다.

 

자바 컴파일러는 컴파일 시 클래스에 생성자가 하나도 정의되어 있지 않으면,

 

자동으로 다음과 같은 기본 생성자를 추가합니다.

public class Constructor {
	
    public Constructor() {

    }
}

 

매개변수가 있는 생성자 선언

 

매개변수를 가지는 생성자를 하나라도 정의했다면, 기본 생성자는 자동으로 추가되지 않는다.

 

따라서 매개변수를 가지는 생성자를 하나라도 선언했다면, 반드시 기본 생성자도 선언해줘야 한다.

public class Constructor {

	public int num1;
    
    public Constructor() {

    }
    
    // 매개변수가 있는 생성자
	public Constructor(int num1) {
		// 전달 받은 매개변수 값을 이용하여 초기화
		this.num1 = num1;
	}
}

 

Method Overloading

public class Constructor {

	public int num1;
	public int num2;
	public int num3;
	public int num4;
    
    	/*
	 * 오버로딩(Overloading) 
	 *  - 하나의 Class 내부에 동일한 Method를 여러 개 작성하는 기법 
	 *   • Method의 이름이 같아야 한다. 
	 *   • 매개변수의 개수가 다르던지, 매개변수의 타입이 달라야 한다.
	 */
	
   	public Constructor(int num1) {
		this.num1 = num1;
	}
    
	public Constructor(int num1, int num2) {
		this(num1);
		this.num2 = num2;
	}

	public Constructor(int num1, int num2, int num3) {
		this(num1, num2);
		this.num3 = num3;
	}

	public Constructor(int num1, int num2, int num3, int num4) {
		this(num1, num2, num3);
		this.num4 = num4;
	}
}

'개발자의 일기 > Study' 카테고리의 다른 글

[10Days] Study_Inheritance  (0) 2023.03.28
[9Days] Study_Method  (0) 2023.03.24
[7Days] Study_객체 지향 언어(Java)  (0) 2023.03.18
[6Days] Study_배열(Array)  (0) 2023.03.15
[5Days] Study_가위 바위 보!  (2) 2023.03.13
Comments