클래스 필드
객체 지향 프로그래밍의 본질은 프로그램을 객체의 상호 작용으로 표현하는 것입니다.
 
객체는 특정 속성과 특정 작업이 있는 일종의 항목입니다.

객체는 원래 현실을 시뮬레이션하기 위해 만들어졌습니다. 우리 주변의 많은 것들이 객체로 표현될 수 있습니다. 예를 들어 최근에 읽은 책은 '이름', '저자', '연령 등급', '책의 텍스트', '페이지 수' 등의 속성을 가진 개체로 생각할 수 있습니다. "책 읽기", "책 굽기" 등과 같은 작업을 수행할 수 있습니다.
Java 프로그래밍 언어의 용어로 이러한 "속성" 필드라고 하며 개체에 대한 작업을 메서드라고 합니다.
Java는 정적으로 유형이 지정되는 언어이므로 모든 객체는 일정한 패턴에 따라 생성되어야 합니다. Java에서 이러한 템플릿은 클래스입니다. 클래스는 특정 유형의 개체가 가질 수 있는 필드와 여기에 정의된 작업을 설명합니다.
클래스객체의 차이는 "자동차"의 차이와 유사합니다. 그리고 "체부레코보 거리 5집에 주차된 토요타 캠리".

Java에서 필드가 있는 고유한 개체 클래스를 만드는 절차를 고려하십시오. 교과서 { 문자열 이름; 문자열 작성자 이름; int ageRequirement; 스트링텍스트; int pageCount; } 이 코드는 class"Book"을 생성합니다. 클래스 '도서'의 객체; 두 개의 정수 속성(«ageRequirement» 및 «pageCount»)과 «String» 유형의 세 가지 속성이 있습니다. (이름 "name", "authorName" 및 "text".
필드가 있는 클래스를 만드는 일반적인 구문은 다음과 같습니다.
  클래스 <클래스 이름> { <첫 번째 속성 유형> <첫 번째 속성 이름> <두 번째 속성 유형> <두 번째 속성 이름> 헬리; <마지막 속성 유형> <마지막 속성 이름> }

물론 Java에서는 이러한 방식(메서드, 액세스 한정자 등도 있음)뿐만 아니라 나중에 더 많은 클래스를 만들 수 있습니다.

수업 방법
Java에서 개체에 대한 작업을 메서드라고 합니다. 메서드는 수학 함수와 같습니다. 인수를 취하고 값을 반환할 수 있습니다. 반면에 Java의 메소드는 객체의 모든 필드에 액세스할 수 있습니다.

클래스에서 메서드를 만들려면 클래스에 메서드를 포함해야 합니다. 예를 들어, 책에 대한 정보를 인쇄하고 사용자가 해당 책을 읽을 수 있는 나이가 되지 않은 경우 경고를 표시하는 print(age) 메서드를 정의할 수 있습니다.

    수업 도서
    {
        문자열 이름;
        문자열 작성자 이름;
        int ageRequirement;
        문자열 텍스트;
        정수 pageCount;
        // 인쇄 방법 생성
        무효 인쇄(정수 나이)
        {
            시스템.종료.< span style="color:#7d9029">println("이름: " +이름);
            시스템.종료.< span style="color:#7d9029">println("저자: " +authorName);
            시스템.종료.< span style="color:#7d9029">println("페이지 수: "+정수.toString(ageRequirement);
            // 인증 코드가 여기에 옵니다
        }
    }
 
메서드 생성을 위한 구문을 분석해 봅시다.
1) 메서드의 첫 번째 줄은 시그니처입니다.
2) 메서드의 반환 유형이 먼저 작성됩니다. 우리 메서드는 값을 반환하지 않으므로 void라고 씁니다.
3) 그런 다음 서명에는 메서드 이름(print)이 있습니다.
4) 괄호 안에 인수 목록이 있습니다. 인수는 쉼표로 구분됩니다. 각 인수에 대해 유형과 이름이 공백으로 구분되어 지정됩니다. 우리의 경우 인수는 하나뿐이며 유형은 int 이고 이름은 age이므로 쉼표가 없습니다.
5) 그 다음에는 중괄호 안에 메서드 코드가 있습니다. 메서드에서 값을 반환하려면 return <value>;를 작성합니다. 예제에서 메서드는 아무 것도 반환하지 않으므로 return 은 생략할 수 있습니다. 메서드 실행을 조기에 종료하려면 return;을 작성할 수 있습니다.
6) 클래스 자체에서 이 클래스의 객체 필드를 이름으로 참조할 수 있습니다.

액세스 한정자
기본적으로 Java 클래스의 모든 필드메서드비공개입니다. 이는 아무도 액세스할 수 없음을 의미합니다. 즉, 이 클래스의 개체 외부에서 메서드는 이 클래스의 개체 필드와 메서드를 사용할 수 없습니다.

필드 및 메소드는 액세스 한정자 public을 사용하여 공개할 수 있습니다. 필드를 비공개로 만드는 private 수정자도 있습니다. 모든 필드와 메서드는 기본적으로 비공개이므로 선택 사항입니다. 다음은 public private 한정자를 사용하는 예입니다. 교과서 { 공개 문자열 이름; 문자열 작성자 이름; private int ageRequirement; 스트링텍스트; 공공 int pageCount; int getTextLength() { 반환 텍스트 길이(); } 공개 int getAverageLetterCount() { return getTextLength() / pageCount; } 개인 정수 getDifficuiltyLevel() { return 5 * ageRequirement * text.Length(); } }
이 버전의 도서 클래스에서는 name 및 pageCount 필드가 다른 개체에서 읽고 수정할 수 있도록 공개됩니다. getAverageLetterCount() 메서드는 다른 클래스의 개체에서 호출할 수도 있습니다. 다른 모든 필드와 메서드는 비공개로 유지되며 이 클래스의 메서드에서만 사용할 수 있습니다. 공개 메소드 getAverageLetterCount()에서 getAverageLetterCount()가 클래스 자체에 속하기 때문에 비공개 메소드 getTextLength()를 호출할 수 있습니다. 그러나 다른 클래스의 메서드에서는 작동하지 않습니다.

그런데 왜 필드를 비공개로 만들까요? Java 코드에서는 대부분 비공개 필드만 볼 수 있습니다. 사실 개인 필드에 대한 액세스가 개체의 공용 메서드를 통해 수행되는 경우 개인 필드에 대한 이러한 액세스를 통해 추가 작업 및 검사를 수행할 수 있습니다. 이에 대한 자세한 내용은 캡슐화에 대한 강의에서 설명합니다.

지금까지의 단원에서는 개체를 만들기 위한 템플릿인 클래스 만들기에 대해 설명했습니다. 같은 수업에서 객체 자체를 만들고 사용하는 과정을 설명합니다.

링크
Java 언어에서 변수는 개체를 저장할 수 없습니다. 대신 Java에는 메모리에서 개체의 위치를 ​​가리키는 참조가 있습니다.
개체 참조 유형의 변수를 만드는 구문은 다음과 같습니다.
<클래스 이름> <변수명>;
개체가 참조될 클래스를 즉시 표시한다는 점은 주목할 가치가 있습니다.

예: Book 클래스를 가리키는 "b"라는 이름의 변수:

책 b;

같은 방식으로 클래스 필드를 만들 수 있습니다(여기에 액세스 한정자를 추가할 수 있음). 참조 배열을 만들고 메서드에서 반환할 수 있습니다. 예:

공개 클래스 라이브러리 {
  공개 도서[] 도서;
  공개 도서 findBookWithName(문자열 이름) {
//올바른 책을 찾는 코드
  }
};


결론: 여러 가지 방법으로 다른 기본 유형(int, long, double...)의 변수와 동일한 방식으로 참조를 사용할 수 있습니다.