본문 바로가기
Language & Framework & GIT/JAVA

오늘은 짧은 언어_06

by veganwithbacon 2022. 8. 9.
반응형

  객체 배열

        : 자바에 대한 레퍼런스를 원소로 갖는 배열 

 

배열 선언 및 생성

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

댓글