오버로딩 ( overloading)

 : 한 클래스 안에 같은 이름의 메서드를 여러개 정의하는 것

 +@ 

메서드는 동사 작업을함.

즉, 여러개 오버로딩 하더라도 하는일이 같다.

 

성립조건 3가지

1. 메서드 이름이 같아야함

2. 매개변수의 개수 또는 타입이 달라야함

3. 반환타입은 영향없다. (반환은 달라도상관없음)

 

주의, 성립은 하나,  만약 add(3,3) 으로 호출시 어느 메서드가 실행될지 알수없다.
그래서 호출시 ambiguous 에러.
어떤메서드를 호출하려는지 애매하다~

 

 

 

예시) 

println() 하나로 모든 타입들을 출력시킬수 있었다.


생성자(constructor)

 : 인스턴스가 생성될 때마다 호출되는 '인스턴스 초기화 메서드' ( iv 초기화  메서드)

 

규칙

 1. 생성자메서드 이름이 클래스이름과 같아야함.

 2. 리턴값 없음 ( 그래서 반환타입 적지않음 )

 3. 모든 클래스는 반드시 1개 이상의 생성자가 있어야함.

 

class Card {
    card() {  인스턴스 초기화작업  }                                             // 매개변수 없는 기본생성자
    card(String kind, int number) { 인스턴스 초기화작업 }           // 매개변수 있는 생성자
}

 

 

예시) 초기화가 뭔가?   객체 속성( iv변수) 에 값을 넣어주는 것

Time t = new time()
t.hour = 12;
t.minute = 13;
t.second = 55;

생상자를 만들어준다면 아래와같이 한줄로 간단히 작업할수 있다.  

Time t = new time( 12, 13, 55); 

기본 생성자 ( 매개변수가없는 )

 :  생성자가 하나도 없을때만 !!, 컴파일러가 자동추가해줌 (직접작성해주는게 좋다 )


Parent 클래스에서 생성자가 하나도 없었을때는, 컴파일시 컴파일러가 자동으로 만들어줘서 눈치 채지못했다.

그러나 매개변수가 있는 생성자를 만들게되면서, 
생성자가 1개이상이라 컴파일러가 더이상 기본생성자를 만들어주지 않음
그래서 직접 작성필요

 

 

 

 

매개변수가 있는 생성자


생성자 this()

 : 생성자에서 다른생성자를 호출할 때 사용 (코드의 중복을 제거하려 사용)

   반드시 첫줄에서만 this ( )  가능

 

 

참조변수 this

 : 인스턴스 자신을 가리키는 참조변수

   인스턴스 메서드 또는 생성자에서 사용가능 

   지역변수(lv)와 인스턴스변수(iv)를 구별할 때 사용

  참조변수 this 생성자 this(), this(매개변수)
  인스턴스 자신을 가리키는 참조변수 같은클래스의 다른생성자를 호출할 때 사용
  인스턴스 주소가 저장되어있음
  모든 인스턴스 메서드에 지역변수로 숨겨진채 존재
(생략가능하기 때문에)
  인스턴스 메서드 또는 생성자에서 사용가능
( static 메서드에서는 사용불가)

※ this와 this()는 완전히 다른 것이다

 

 

 


출처 : 남궁성의 정석코딩

https://www.youtube.com/@MasterNKS

 

+ Recent posts