본문 바로가기
TIL

내일배움캠프 2주차 TIL + 오버로딩, 인스턴스 멤버, 클래스 멤버 등

by 율량동박씨 2024. 4. 25.

오늘의 키워드

  • 메서드 오버로딩
  • 기본형과 참조형 매개변수
  • 인스턴스 멤버와 클래스 멤버
  • this
  • 생성자
  • 제어자
  • import와 package

오늘의 내용

  • 메서드 오버로딩 
    • 함수가 하나의 기능이 아닌 하나의 메서드 이름으로 여러 기능을 구현하는 것
    • 같은 이름을 가진 메서드라도 타입, 순서가 다르면 동일한 이름 사용 가능
    • 응답 값만 다르거나 접근제어자만 다른건 사용불가능하다
    • 메서드의 이름은 하나만 사용해서 메서드 이름 절약이 가능하다
  • 기본형&참조형 매개변수
    • 기본형 매개변수 
      • 메서드를 호출할 때 전달한 매개값으로 지정한 값을 매개변수에 복사해서 전달
      • 기본형일때는 값자체를 복사해서 원본값이 변경되지 않음
    • 참조형 매개변수
      • 메서드를 호출할 때 전달할 매개값으로 지정한 값의 주소를 매개변수에 복사해서 전달
      • 저장된 곳의 원본주소를 알고있어 값을 읽거나 변경 가능
      • 반환타입도 참조형이 될 수 있다
  • 멤버
    • 멤버 = 필드 + 메서드
    • 필드와 메서드는 선언 방법에 따라 인스턴스 멤버와 클래스 멤버로 구분
    • 인스턴스 멤버
      • 인스턴스 멤버 = 인스턴스 필드 + 인스턴스 메서드
      • 객체를 생성해야 사용 가능하다
      • 객체의 필드는 각각의 인스턴스마다 고유하게 값을 가질 수 있다
      • 메모리 효율 때문에 메서드는 메서드 영역에 두고 모든 인스턴스들이 공유해서 사용한다
      • 생성과 사용을 분리해야된다
      • 인스턴스 메서드도 클래스 필드를 사용할 수 있다
    • 클래스 멤버
      • 클래스 멤버 = 클래스 필드 + 클래스 메서드
      • 클래스 로더에 의해 메서드 영역에 저장되고 사용된다
      • 메서드 영역의 클래스와 같은 위치에 고정적으로 위치
      • 객체 생성없이도 사용 가능
      • static 키워드를 이용
      • 공용적인 데이터를 저장할 때 사용
  • 지역변수
    • 해당 메서드가 실행될 때마다 독립적인 값을 저장하고 관리
    • 메서드 내부에서 정의될 때 사용된다
    • 메서드가 종료될 때 소멸된다
  • final 필드
    • 최종적인 필드라는 뜻이다
    • 초기값이 지정되면 프로그램 실행도중 수정이 불가하다
    • final String company = "GENESIS"; 선언 방법
  • 상수
    • 공용이고 수정이 되지 않는다
    • 전체적으로 대문자로 작성한다 
    • static final String COMPANY = "GENESIS"; 선언 방법
  • 생성자
    • public Car() {} // 선언
      Car car = new Car(); // 호출 
    • 객체가 생성될 때 호출되며 객체를 초기화 한다
    • 기본 생성자 : 괄호안에 아무것도 넣지않는 생성한다
    • 모든 클래스는 생성자가 하나 이상 존재한다
    • 생성자를 선언하지 않으면 컴파일러는 기본 생성자를 바이트코드 파일에 자동 추가
    • 하나의 생성자라도 선언되어있으면 기본 생성자를 추가 안됨
  • this
    • 인스턴스 자신을 표현하는 키워드
    • 생성자를 사용할 때는 붙이는게 좋다
    • 내부 생성자 및 메서드에서 내부 멤버에 접근하기 위해 사용
    • 필수는 아니지만 상황에 따라 필수가 될 수 있음
    • 객체의 필드를 초기화할 때 중복되는 코드를 줄여줌
    • 다른 생성자를 호출할 때 반드시 생성자의 첫줄에 작성해야한다
    • this(...) : 자신의 생성자를 호출하는 키워드
  • 제어자
    • 클래스, 변수, 메서드의 선언부에 사용되어 부가적인 의미를 부여해준다
    • 접근 제어자 : public, protected, default, private
    • 그 외 제어자 : static, final, abstract
    • 접근 제어자
      • 단 하나만 사용가능하다
      • 인스턴스의 생성을 제한할 수 있다
      • 클래스의 접근 제어자와 일치한다
      • 멤버 또는 클래스에 사용, 데이터를 보호하기 위해 외부에서 접근하지 못하도록 제한
      • public : 접근 제한 없음
      • protected : 같은 패키지 내에서 다른 패키지의 자손클래스에서 접근 가능
      • default : 같은 패키지 내에서만 접근 가능
      • private : 같은 클래스 내에서만 접근 가능
    • 메서드와 멤버변수에선 모두 사용가능, 지역변수에선 사용불가
  • Getter와 Setter
    • Getter 
      • 외부에서 객체의 private한 필드를 읽을 때 사용
      • 규칙은 get + 필드이름(첫 글자 대문자)
      • 인스턴스 메서드 호출과 사용방법이 동일하다
      • 예시 : public double getPrice( ) { }
    • Setter
      • 외부에서 객체의 private한 필드를 저장 및 수정할 필요가 있을 때 사용
      • 규칙은 set + 필드이름(첫 글자 대문자)
      • 인스턴스 메서드 호출과 사용방법이 동일하다
      • 예시 : public void setModel(String model) { }
    • package와 import
      • package
        • 클래스의 일부분이며 클래스를 식별해준다
        • 상위 패키지와 하위 패키지를 도트로 구분
        • 다른 패키지에서 접근할 땐 경로를 적어야 한다
      • import
        • 다른 패키지에 있는 클래스를 사용하기 위해 명시하는 키워드
        • 서로 다른 패키지에 있는 같은 이름 클래스를 동시에 사용하려면 패키지명을 전부 명시해야한다

오늘의 회고

  • 듣는 강의의 양은 줄었는데 내용은 많아지는 기이한 현상이 일어났다
  • 강의가 계속 될수록 머리속은 뒤죽박죽
  • 이래서 개인프로젝트 마감기한 맞춰서 제출가능할지 의문이다