Java에서의 객체

song yuheon·2023년 8월 20일
0

객체 생성과 참조형 변수

  • 객체 생성
    객체 생성 연산자 New 사용시 클래스로부터 객체 생성 가능
    객체가 생성되면서 생성자 역시 호출
  • 참조형 변수
    new 연산자를 통해 객체 생성 시 해당 인스턴스 주소 반환되기에 해당 클래스 참조형 변수 사용시 받아줄 수 있음
  • 객체 배열
    객체는 참조형 변수와 동일하게 취급 -> 배열 또는 컬렉션에 저장하여 관리 가능

객체의 속성 ( 필드 )

필드는 객체의 데이터를 저장하는 역활

  • 객체의 필드의 분류
    고유한 데이터 / 상태 데이터 / 객체 데이터
  • 필드의 초기값과 초기화
    사용자가 정의하여 선언한 클래스는 초깃겂 제공 안 할 시 자동으로 기본 값으로 초기화
    초깃값 제공 방법 : '필드타입 필드명 = 값;'으로 직접 초기화
  • 외부에서 필드에 접근
    Car car = new Car();
    -> 도트 연산자 이용해서 접근
    car.color = "asd";
  • 내부에서 필드에 접근
    double brakePedal(){
    speed = 0;
    return speed;
    }
    -> 메서드 내부에서는 객체의 필드 speed를 바로 호출해서 사용 가능

객체의 행위 : 메서드

메서드는 객체의 행위를 뜻하며 객체간에 협력을 위해 사용

  • 메서드 선언
    [ Return type ] ( 매개변수, ... ) {
    logic
    }

    • Return type
      메서드가 실행 후 호출한 곳으로 값 반환시 해당 반환 값의 타입을 의미한다.
    • 매개변수
      메서드를 호출할 때 메서드로 전달하려는 값을 받기 위해 사용되는 변수
      double gasPedal(double kmh, char type) {
      speed = kmh;
      return speed;
      }
  • 메서드 호출 방법
    메서드 호출이란?
    메서드의 로직(내부 코드)을 실행한다는 의미
    클래스는 설계도 메서드는 객체의 행위
    -> 객체를 생성한 후에 메서드 사용가능

    외부 접근과 내부 접근 역시 필드와 동일하게 접근 가능
    하지만 메서드는 매개변수 순서와 타입을 고려해서 접근해야함 또한 반환값 역시 있다면 받아줄 수 있음

  • 메서드 오버로딩
    함수가 하나의 기능만을 구현하는 것이 아닌 하나의 메서드 이름으로 여러 기능 구현 하도록 하는것
    = 한 클래스 내에 이름 동일한 메서드 있더라도 매개 변수의 개수, 타입 순서가 다를시 동일한 이름을 사용해서 메서드를 정의 가능

  • 오버로딩의 조건

    • 메서드의 이름이 같고, 매개변수의 개수, 타입, 순서가 달라야 합니다.
    • '응답 값만' 다른 것은 오버로딩을 할 수 없습니다.
    • 접근 제어자만 다른 것도 오버로딩을 할 수 없습니다.

+) 결론, 오버로딩은 매개변수의 차이로만 구현 가능

  • 오버로딩의 장점
    • 메서드 이름 하나로 상황에 따라 동작 개별로 정의 가능
    • 메서드 이름 절약가능
  • 기본형 & 참조형 매개변수
    • 기본형 : 메서드 호출시 전달 매개값을 메서드의 매개 변수에 복사하여 전달
      값 자체가 복사 되기에 매개값 지정 변수 원본 값 변화없음
    • 참조형 : 메서드 호출시 전달 매개값 주소를 매개 변수에 복사하여 전달
      값의 원본 주소를 복사하기에 값을 읽어오기도 원본의 값을 변경하는 것도 가능하다.
      메서드 매개변수 만이 아닌 반환 타입도 참조형이 될 수 있음
profile
backend_Devloper

0개의 댓글