728x90

메소드 오버로딩(Overloading)

  • (같은 클래스 내에)이름이 같은 메소드 작성가능
  • 매개변수의 개수나 타입이 서로 다르고 이름이 동일한 메소드들

💡 리턴 타입은 오버로딩과 관련이 없음

public int getSum(int i, int j){
            return i + j;
        }
public int getSum(int i, int j, int k) {
            return i + j + k;
        }

 

  • 메소드 호출

 


객체 소멸

: new 키워드 사용 ( 생성 ) → 할당된 객체 메모리를 다시 JVM의 가용 메모리로 돌려주는 것

C/C++과 다르게 할당받은 객체를 프로그래머가 임의로 소멸 불가

└ 객체 소멸은 JVM 고유의 역할


가비지(gabage)

  • 가리키는 레퍼런스가 하나도 없는 객체
    • 사용 불가한 메모리

가비지 컬렉션

  • JVM의 가비지 컬렉터가 자동으로 가비지 수집 후 반환

 

  • 가비지 발생
public class GarbageEx {
    public static void main(String[] args ) {
        String a = new String("Good");
        String b = new String("Bad");
        String c = new String("Normal");
        String d, e;
        a = null;
        d = c;
        c = null; // null이 되면 연결이 끊어짐
    }
}

 

 

  • 자바에서 가비지를 자동 회수하는 과정
    • 가용 메모리로 반환 → 가용 공간의 증가
  • 가비지 컬렉션 스레드에 의해 수행

개발자에 의한 강제 가비지 컬렉션

  • System 또는 Runtime 객체의 gc() 메소드 호출
System.gc(); //가비지 컬렉션 작동 요청

패키지

: 관련있는 클래스 파일(컴파일 된 .class )을 저장하는 디렉터리

자바 응용 프로그램은 하나 이상의 패키지로 구성


접근 지정자

: private, protected, public, 디폴트(접근 지정자 생략)

  • 접근 지정자의 목적
    • 클래스나 일부 멤버를 공개하여 다른 클래스에서 접근하도록 허용
    • 캡슐화에 묶인 보호를 일부 해체할 목적(캡슐화 특징에 반하는 개념)

 


클래스 접근 지정

  • public 클래스: 다른 모든 클래스에게 접근 허용
  • 디폴트 클래스(접근지정자 생략)
    • package-private 라고도 함
    • 같은 패키지의 클래스에만 접근 허용

 


멤버 접근 지정

 

 

  • public 멤버: 패키지에 관계 없이 모든 클래스에게 접근 허용

 

  • private 멤버: 동일 클래스 내에서만 접근 허용
    • 상속 받은 서브 클래스 내에서 접근 불가

 

  • protected 멤버: 같은 패키지 내의 다른 모든 클래스에게 접근 허용
    • 상속 받은 서브 클래스는 다른 패키지에 있어도 접근 가능

 

  • 디폴트 (default) 멤버: 같은 패키지 내의 다른 클래스에게 접근 허용


Static 멤버 / non-static 멤버

 


Static 멤버

: 클래스당 하나만 생성(클래스 멤버라고도 함)

  • 객체마다 생성 ❌
  • 객체를 생성하지 않고 사용가능
  • 특성
    • 공간적 특성 - static 멤버들은 클래스 당 하나만 생성
    • 시간적 특성 - static 멤버들은 클래스가 로딩될 때 공간 할당
    • 공유의 특성 - static 멤버들은 동일한 클래스의 모든 객체에 의해 공유

non-static 멤버

: 객체마다 존재 (인스턴스 멤버라고도 함)

  • 특성
    • 공간적 특성 - 멤버들은 객체마다 독립적으로 별도 존재
    • 시간적 특성 - 필드와 메소드는 객체 생성 후 사용 가능
    • 비공유 특성 - 멤버들은 다른 객체에 의해 공유되지 않고 배타적

 

 


 

 

 

메소드 작성과 접근 지정자

메소드 오버로딩(Overloading)

www.notion.so

 

아래 노션 페이지에 자바 공부 내용에 대해 업로드 합니다!

수정사항이나 질문사항의 경우 노션 댓글로 남겨주세요!(*•̀ᴗ•́*)و ̑̑

 

 

JAVA 이론 정리

주석 단축키 주석 처리하고 싶은 부분을 블록 처리하고 ‘Ctrl+Shift+ / ’를 누르면 /* */로 주석 처리가 됩니다. 주석을 해제하고 싶은 부분을 블록 처리하고 ‘ Ctrl+Shift+ \ (원 표시 혹은 역슬러시)

www.notion.so

 


개발 환경

Intellij

 

작성 플랫폼

Notion

 

728x90

'🧑‍💻 Language > Java' 카테고리의 다른 글

[Java] 8. 메소드 오버라이딩  (0) 2021.05.16
[Java] 7. 상속  (0) 2021.05.08
[Java] 5. 자바의 객체 지향적 특성  (0) 2021.05.02
[Java] 4. 배열과 main() 메소드  (0) 2021.05.02
[Java] 3. 자바 기본 문법  (0) 2021.05.02