[Java] 클래스 메소드, 메소드 오버로딩

YoungMinKim·2020년 11월 8일
0
post-thumbnail

클래스 메소드

static 선언을 붙여서 정의하는 Class Method

  • static Method의 경우 인스턴스와 관계가 없다.
  • 즉, 다른 Memory 공간에 저장이 되어 호출이 된다.
  • 자리를 빌려 줬기 때문에 내부에서 이름을 통해 접근이 가능하다.
  • Instance를 생성하여 static Method에 접근 할 수 있지만, 클래스명.Method를 권장한다.

클래스 메서드에서 인스턴스 변수에 접근이 가능할까?

  • 공간적으로 분리가 되 있기 때문에 접근이 불가능하다.

System.out.println

System.out.println

  • System : Class 명
  • out : Class 변수
  • println : out(Class 변수)가 참조하는 Instance Method를 의미한다.

public static void main()

사진 참고.

Static 초기화 블럭

class DateOfExecution {
	static String date;

	static {
		LocalDate nDate = LocalDate.now();
		date = nDate.toString();
	}

	public static void main(String[] args){
		System.out.println(date);
	}
}

Instance의 생성과 관계 없이 static 변수가 메모리 공간에 할당 될 때 실행이 된다.

  • DateOfExecution 클래스가 JVM에 의해 메모리 공간에 할당이 되는 순간 호출이 된다.
  • static 변수를 초기화 하기 위해 사용이 되는 기술이다. ****

Method OverLoading

class MyHome {
	void mySimpleRoom(int n) {...}
	void mySimpleRoom(int n1, int n2) {...}
	void mySimpleRoom(double d1, double d2) {...}
}

Method OverLoading
호출된 Method를 찾을 때 참조하게 되는 두 가지 정보

  • Method의 이름.
  • Method의 매개변수 정보.
  • Method의 이름은 동일하나 Variable타입 혹은 개수다른 것Method OverLoading이라 칭한다.
  • Method를 호출 할 때 전달하는 Variable의 타입 혹은 개수를 다르게 함으로써 호출이 가능하다.
  • 반환 형은 Method OverLoading의 조건에 부합 하지 않는다.

Constructor OverLoading

Constructor OverLoading (까먹고 있었던 부분, 다시 한번 Remind 하자)

  • 다수의 생성자를 갖는 클래스 생성이 가능하다.
  • 생성자 역시 OverLoading이 가능하다.
  • Circle c = new Circle("123", 1);

Keyword this를 이용한 다른 생성자의 호출

Person(int rnum){
    this(rnum, 0);  //이 인스턴스의 생성자를 호출해라.
}

this()

  • this Keyword를 사용해 Member 변수에 접근하는 방법도 있지만...
  • 생성자 안에서 this Keyword를 사용해 다른 생성자를 호출 할 수 있다.
  • 코드의 중복을 줄일 수 있다.
  • '이 Instance의 다른 생성자를 호출 해 주세요' 라는 의미를 갖는다.
profile
https://ym1085.github.io

0개의 댓글