Constructor / Variables

똘이주인·2021년 5월 18일
0
post-thumbnail

생성자(Constructor)

모든 클래스는 인스턴스화 될때 생성자를 사용한다.

생성자가 하는 일은 객체가 될 때 필드를 초기화 하는 역할을 수행한다.

생성자의 특징

  • 생성자는 리턴타입이 없다.
  • 생성자를 프로그래머가 만들지 않으면 매개변수가 없는 생성자가 컴파일할 때 자동으로 만들어진다.
  • 매개변수가 없는 생성자를 기본생성자라고 한다.
  • 생성자를 하나라도 프로그래머가 만들었다면 기본생성자는 자동으로 만들어지지 않는다.
1. 클래스이름() { ... }                  // 매개변수가 없는 생성자 선언
2. 클래스이름(인수1, 인수2, ...) { ... } // 매개변수가 있는 생성자 선언

class NoteBook{
		NoteBook() {  // 클래스 이름과 같은 이름으로 생성된 기본 생성자(1)
		} 
  	
		NoteBook(int size, int weight){  // 클래스 이름과 같은 이름으로 생성된
				this.size = size;            // 매개변수가 있는 생성자(2)
				this.weight = weight;
		}
}

기본생성자(default constructor)

모든 클래스에는 기본적으로 생성자가 반드시 존재한다.

만약 직접 생성자를 작성하지 않으면 JAVA가 자동으로 작성 이렇게되면 개체 초깃값을 설정할 수 없다. 이것을 "기본생성자"라고 한다.

Class NoteBook{
		int size;
		int weight;
		int volume;
		Sting color;
		boolean power;

		void power(){
				power = !power;   // 참이면 거짓, 거짓이면 참
		}
		void volumeUp(){
				volume++;
		}
		void volumeDown(){
				volume--;
		}
}

매개변수 생성자(parameter constructor)

만약 클래스의 필드를 원하는 값으로 지정(초기화)하고 싶다면 매개변수가 있는 생성자를 사용할 수 있다.

Class Sandwhch{

		String ingredient;            // 재료

		Sandwich(){                   // 기본 생성자
		}

		Sandwich(String ingredient){  // 매개변수가 있는 생성자
				this.ingredient = ingredient;
		}

}

생성자 오버로딩(Overloading)

생성자의 매개변수의 유형과 개수가 다르게 하여 같은 이름의 생성자를 여러 개 가질 수 있다.

  • 생성자도 메소드와 마찬가지로 여러개를 선언할 수 있다.
  • 매개변수의 수와 타입이 다르다면 여러개의 생성자를 선언할 수 있다.
public class Sandwhch{
        String name;
        int number;

        public Sandwhch(){

        }

        public Sandwhch(String name){
            this.name = name;
        }

        public Sandwhch(String name, int number){
            this.name = name;
            this.number = number;
        }
    }

this.

this는 클래스에서 생성된 인스턴스를 뜻한다.

this는 다른 생성자를 호출하는 기능을 가지고있음 또한 클래스 속성과 매개변수의 이름이 같은 경우 this 사용

this를 붙이면 생성자를 통해서 샌드위치 클래스 속성인 "ingredient"에 값을 입력할 수 있습니다.

변수(variables)

변수는 클래스 변수, 인스턴스 변수, 지역 변수 모두 세 종류.

변수의 종류를 결정짓는 요소는 '변수의 선언된 위치' 이므로 변수의 종류 파악하기 위해서는 변수가 어느 영역에 선언되었는지 확인하는 것이 중요

public class test {

	int iv; // 인스턴스 변수 : 인스턴스가 생성될 때 생성
	static int cv; // 클래스 변수 : 인스턴스 변수에 static만 붙여주면 됩니다.
	
	void method() {
		int lv; // 지역 변수 : 메소드 내에서 선언되며 메서드 내에서만 사용할 수 있는 변수
	}
}
  1. 클래스 변수

    • 멤버 변수 중에 static 이 붙은 것

    • 생성시기는 클래스가 메모리에 올라갈때 생성됨

      따라서, 한 클래스의 모든 인스턴스들이 공통적인 값을 유지하는 속성의 경우 사용

    • 클래스 변수는 인스턴스와 달리 모든 인스턴스가 공통된 저장공간을 공유하게 된다. (그래서 공유변수라고도 함)

    • 클래스가 로딩될 때 생성되서 프로그램이 종료 될 때 까지 유지되며, public을 앞에 붙이면 같은 프로그램 내에서 어디서나 접근할 수 있는 전역변수(global variable)의 성격을 갖고 있다.

  2. 인스턴스 변수(객체변수)

    • 인스턴스가 생성될 때 생성
    • 각각의 인스턴스 별로 독립적인 저장공간을 가짐
    • 모든 인스턴스가 서로 다른 값을 가질 수 있음.
  3. 지역변수

    • 위에서 지역 변수인 lv는 메소드 영역에서 선언
    • 메소드가 호출되어 종료될 때까지 유효하며 종료된 이후에는 해당 변수를 사용할 수 없다.
    • {}블럭 내의 범위에서만 사용 가능.

0개의 댓글