(JAVA) 클래스와 객체 및 멤버

클래스와 객체의 관계

0. 객체 지향 언어

  • 함수를 단일 개체로 그룹화합니다.
  • 개체 간의 상호 작용은 문제를 해결하고 프로그램을 더 명확하고 쉽게 만듭니다.

1. 물건이란?

  • 정의: 실제 세계의 객체 또는 객체를 모방하는 프로그램. 물체가리키다.
  • 객체가 가지고 있다 데이터그리고 제공 기능통해 상호 작용합니다.

2. 클래스와 객체

수업이 붕어빵을 만들기 위한 틀이라면 대상은 붕어빵 틀을 통해 만들어진 붕어빵입니다.

수업

  • 클래스에서 생성될 개체의 공통 조상은 동작의 추상 표현을 정의합니다.
    • 클래스 정의는 프레임(쉘)안돼.
  • 클래스의 구성 요소: 멤버 필드(속성) 및 메서드
    • 멤버 필드: 변수 또는 상수 선언문으로 필요 시 초기화할 수 있습니다.
    • 메서드: 메서드 본문을 구현합니다.

물체

  • 개체의 구성 요소: 특성 및 동작

    • 재산 : 객체의 특성을 표현하는 정적 속성입니다.
    • 행동 : 객체 내부에서 처리되는 작업이거나 객체 간에 영향을 주고 받는 작업입니다.
      동적 작업을 처리하는 장치입니다.
  • 같은 종류의 객체의 공통 ‘데이터 구조’와 ‘기능’을 따로 추출하여 하나의 클래스로 정의합니다.

클래스와 객체의 차이점

클래스는 객체를 생성하기 위한 ‘틀’이며 객체의 ‘속성’과 ‘동작’을 추상적으로 정의합니다.

객체는 속성에 대한 고유한 값을 갖고 동일한 동작을 수행하는 구체적인 인스턴스입니다.

3. 동적 메모리 할당

클래스 구조

(접근 제한) (클래스 유형) 클래스

멤버 필드

  • 인스턴스 멤버 필드 : 각 개체를 생성할 때 별도의 메모리 할당하다.
    • 멤버 변수의 경우 각 개체에 대해 고유 속성 값 저장이것은 가능하다.
  • 정적 멤버 필드 : 프로그램 시작 시 메모리를 할당합니다.
    • 개체 수에 관계없이 하나만 생성그리고 모든 객체 공유하다하다.
    • 예) 정적 최종 더블 PI=3.14;

동적 메모리 할당

//Circle 클래스 정의
class Circle{
    double radius;
       double area(){
        return radius*radius*3.14;
    }
}

//c1 객체 생성
Circle c1= new Circle();  //참조 변수 선언 및 객체 생성
double c1.radius=10;      //instance 멤버 변수 접근
double area=c1.area();

위의 코드에서 볼 수 있는 것은 다음과 같습니다.

  • 새로운 연산자동적으로 할당되는 데 필요한 크기를 자동으로 계산합니다.
    • 동적으로 할당된 영역에 대한 정보 참조 변수에 할당있을 수있다.
    • 참조 데이터 유형동적 할당 영역이란 무엇입니까? 기준값(메모리 주소)가 있는 포인터 변수와 비슷합니다.
  • c1은 참조 변수개체에 대한 참조를 보유합니다.
    • 개체에 액세스하는 유일한 방법인 c1 물체이라고도 불리는

멤버 및 방법

0. 메소드 오버로딩

  • 정의: 클래스 내에서 이름이 같은 여러 메서드를 정의할 수 있습니다.
  • 구조: (액세스 제한) ((매개변수))
    • 예) public FruitSeller(int numOfApple, int money)

1. 이 참조 변수

  • 정의: 메소드를 호출할 때, 메서드 자체를 호출한 개체에 대해. 기준값을 받는 변수안돼.

    • 메서드에서 자동으로 정의됨 지역 변수안돼.
  • 자신의 다른 구성원을 조작하고 싶을 때 사용합니다.

    public class FruitSeller {
      static final int APPLE_UNIT_COST=1000;
    
      int numOfApple;
      int money;
    
      public FruitSeller(int numOfApple, int money){
          this.numOfApple=numOfApple;
          this.money=money;
      }  //생성자로 매개변수를 받아서 초기화를 간단히 해줌
    
      public FruitSeller(int numOfApple) {
          this(numOfApple,0);
      }  //오버로딩을 통해서 초기화 사과 개수를 매개변수로 전달 받음. 
         //돈은 항상 0원으로 초기화 한다면 리터럴 정수 0으로 작성

    위의 코드에서 볼 수 있는 것은 다음과 같습니다.

  • this.member 변수=매개변수
    인자로 받은 numOfApple과 멤버 변수인 numOfApple을 구별하기 위해 멤버 변수 앞에 추가한다.

    public FruitSeller(int numOfApple, int money){
      this.numOfApple=numOfApple;
      this.money=money;
    }
  • this(매개변수,0)
    하나의 인자만 받고 다른 매개변수에 대한 초기화 값을 설정하고 싶을 때 이것을 씁니다(초기화하려는 매개변수와 값).

    public FruitSeller(int numOfApple) {
          this(numOfApple,0);
    }

2. 정적 멤버

  • 클래스명.정적멤버
    • 다른 클래스에서 정적 멤버(=정적 멤버)에 접근할 때는 클래스명.정적 멤버로 작성한다.
    • 예) 서클.PI
      //Circle 클래스
      class Circle{
      static final double PI=3.14;
      }
      

//객체 생성 후 정적 멤버 접근 시
Circle.PI;
“`