본문 바로가기
국비 학원 가서 개발새발

혼자 공부) 오버로딩 외...

by 휴일이 2022. 10. 2.

오버로딩이란?

한 클래스 내에 같은 이름의 메소드가 있어도

매개변수의 개수나 타입이 다르면

같은 이름의 메소드로 정의가 가능하다!

 

 

오버로딩 조건

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

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

3.반환 타입은 영향을 주지 못함

 

 

오버로딩 메소드의 예) println

println(int x) (String x) (char x)....

우리가 쓰는 값에 따라 다른 타입을 출력해줌

 

 

int add(int a, int b)  {}

int add(int x, int y) {}

ㄴ오버로딩 X 매개변수의 이름만 다름

 

int add(int a, int b) {}

long add(int a, int b) {}

ㄴ 오버로딩 X 반환타입만 다름, 반환타입은 영향없음

 

long add(int a, long b) {}

long add(long a, int b) {}

ㄴ 오버로딩O 매개변수의 타입(순서)가 다름!

단, add(3,3) 하면 오류가 뜸->두 메소드 어느곳에든지 대입이 가능해서

add(3,3L) 이나 add(3L,3)으로 써줘야함

 

 

 

 

-------------- 여기서부터는 주저리..혼자 생각한 거라 정확하지 않을 수 있음

 

@override

ArrayList<객체> list 를 Iterator<객체> iter 에 담고

iter에 담은 list의 값을 찾아서 불러올 때...

iter.next() 로 불러오면

객체주소값만 뜬다...;;

 

근데 객체에 반환값을 줘서 출력 싶을 수도 있잖아요 ㅠㅠ

예) list에 회원정보를 저장하고 그걸 iterator에 저장하고...

iter에 저장된 회원정보 list를 불러오면

이름: 000 아이디: 000 전화번호: 000

라고 뜨게 하고 싶을 수도 있잖아요 ㅠㅠ

 

 

이럴 땐 방법이 있다 @override를 메소드 위에 써주면 됨

@override

public String toString() {

return "이름"+name+"아이디"+id+"전화번호"+tel;

}

요렇게 해두면 객체를 불러올 때, 객체 주소가 뜨는 게 아니라 toString의 return값이 뜬다 ㅋㅋ

 

 

@override가

이 메소드를 실행시킬 때, 같은 이름의 메소드가 이쓰면

요 메소드를 대신 실행시키세요!!! 라는 뜻 같다 ㅎㅎ

찾아보니 iter.next()로 찾는 객체를 불러올 때

toString() 메소드로 객체주소를 문자열로 변환시켜서 가져오는 모양이다(확실하지 않음)

 

 

일단 객체를 배열에 저장하고

배열에서 객체를 불러올 때

객체 주소가 아닌 객체 자체에 출력값을 줘서->이 객체 불러올때 이렇게 반환하셈 ㅎㅎ

이라고 설정하고 싶으면

@override와 toString() 을 이용해보자 !!(걍 외우면 됨;;)

 

 

 

 

그리고 ArrayList<객체이름> 하면 인스턴스 자체를 리스트에 저장가능함ㅋㅋ개꿀

ArrayList<객체이름> 참조변수 = new ArrayList<>();

라고 하면 객체를 배열에 저장가능하다 ㅎㅎ

 

 

그리고 ArrayList에서 특정 값을 검색하고

그 값을 가진 개체가 있으면 ~~~그 내용을 수정하기

뭐 이런 거 하고 싶은데 좋은 방법이 없을까 고민중 ㅠㅠ

내일 쉬니까 뭐 좀 찾아봐야겠다

 

하루종일 다른 사람 코드 분석하다가

대가리 깨질거같아서 담배를 얼마나 폈는지 모른다...ㅎ하

728x90