객체 배열
: 자바에 대한 레퍼런스를 원소로 갖는 배열
배열 선언 및 생성
1.배열에 대한 레퍼런스 선언
Circle [ ] c; //배열에 대한 레퍼런스 변수 c를 선언한 것
Circle[5] c; //배열의 크기를 지정하면 컴파일 오류 발생
2.레퍼런스 배열 생성
C = new Circle[5]; //Circle 객체에 대한 레퍼런스 5개 생성
3. 객체 생성
Circle 객체를 하나씩 생성하여 배열 c[ ] 의 각 레퍼런스에 대입
for(int i=0; i<c.length; i++) // c.length는 배열 c의 크기로서 5
c[i] = new Circle(i); // i 번재 Circle 객체 생성
메소드 오버로딩(method overloading)
: 메소드의 형식과,클래스 내에 같은 이름의 메소들르 여러 개 선언하는 것
접근 지정자
: 자바에서 메소드는 반드시 접근 지정자와 함께
public - 클래스 내부/외부에서 모두 호출 가능
private - 클래스 멤버들만 호출 가능
protected - 동일한 패키지의 클래스들과 상속받은 서브 클래스에서 호출 가능
디폴트 접근 지정 - 동일한 패키지 내의 모든 클래스에서 호출가능
리턴 타입
: 메소드가 호출자에게 리턴할 값의 타입
인자 전달
값에 의한 호출(Call by value)
: 자바의 메소드 호출 시 인자 전달 방식
기본 타입의 값이 전달되는 경우 = >매개변수가 복사되어 전달
객체가 전달되는 경우 => 객체의 레퍼런스 값이 전달
배열이 전달되는 경우 => 배열에 대한 레퍼런스만 전달
메소드 오버로딩(메소드 중복)
: 클래스 내 이름이 같지만 매개 변수의 타입이나 개수가 서로 다른 여거 개의 메소드 작성
메소드 오버로딩 조건 : 메소드 이름이 동일
메소드 매개 변수의 개수나 타입이 달라야 한다
오버로딩 성공 사례
- 매개 변수의 타입과 개수가 서로 다른 경우
오버로딩 실패 사례
- 동일한 것이 같은 클래스에 공존 불가
객체 치환 시 주의할 점
객체의 치환은 객체를 복사하는 것이 아니기에 주의하자
public class stamp{
int id;
public stamp(int x) {this.id=x;}
public void set(int x){this.id=x;}
public int get() {return this.id;}
public static void main(String [] args){
Stamp ob1 = new Stamp(3);
Stamp ob2 = new Stamp(4);
Stamp s;
s = ob2;
ob1 = ob2;
System.out,println("ob1.id="ob1.get());
System.out.println("ob2.id="ob2.get());
}
}
이 코드가 실행됨에 따라 원래 ob1이 가리키던 객체는 아무도 가리키지 않으므로 더 이상 프로그램에서 접근할 수 없는 상태가 되었다. 따라서 이 객체는 가비지 (Garbage)가 되어 가비지 컬렉터에 의해 자동으로 수거된다.
즉, ob1과 ob2 모두 기존 ob2가 가리키던 메모리 주소를 가리키고 있는 것이다.
'Language & Framework & GIT > JAVA' 카테고리의 다른 글
Java_Optional<T> isPresent(), ifPresent() 사용하기 (0) | 2022.08.21 |
---|---|
[JAVA] 접근 지정자 (0) | 2022.08.11 |
오늘은 안 짧은 언어_05 (0) | 2022.08.06 |
오늘의 짧은 언어_03 (0) | 2022.08.03 |
[JAVA] 배열과 예외 처리 (0) | 2022.08.03 |
댓글