Java-객체 및 클래스

광고

Java는 객체 지향 언어입니다. 객체 지향 기능이있는 언어로서 Java는 다음과 같은 기본 개념을 지원합니다.

  • 다형성
  • 상속
  • 캡슐화
  • 추상화
  • 클래스
  • 객체
  • 인스턴스
  • 메소드
  • 메시지 전달

이 장에서는 개념-클래스와 객체를 살펴볼 것입니다.

  • 객체-객체에는 상태와 동작이 있습니다. 예 : 개는 꼬리를 흔드는 것, 짖는 것, 먹는 것 등의 상태 (색, 이름, 품종 및 행동)를 가지고 있습니다. 객체는 클래스의 인스턴스입니다.

  • 클래스-클래스는 해당 유형의 객체가 지원하는 동작 / 상태를 설명하는 템플릿 / 청사진으로 정의 할 수 있습니다.

Java의 객체

이제 객체가 무엇인지 자세히 살펴 보겠습니다. 현실 세계를 고려하면 우리 주변의 많은 물체, 자동차, 개, 인간 등을 찾을 수 있습니다.이 모든 물체에는 상태와 행동이 있습니다.

개를 고려하면 상태가됩니다. 이름, 번식, 색깔, 행동은-짖고, 꼬리를 흔들고, 달리는 것입니다.

소프트웨어 개체를 실제 개체와 비교하면 매우 유사한 특성을가집니다.

소프트웨어 개체에는 상태와 동작도 있습니다. 소프트웨어 객체의 상태는 필드에 저장되고 동작은 메소드를 통해 표시됩니다.

따라서 소프트웨어 개발에서 메소드는 객체의 내부 상태에서 작동하고 객체 간 통신은 메소드를 통해 수행됩니다. .

자바 클래스

클래스는 개별 객체가 생성되는 청사진입니다.

다음은 클래스 샘플입니다.

public class Dog { String breed; int age; String color; void barking() { } void hungry() { } void sleeping() { }}

클래스는 다음 변수 유형을 포함 할 수 있습니다.

  • 지역 변수-변수 메서드, 생성자 또는 블록 내에 정의 된 것을 지역 변수라고합니다. 변수는 메서드 내에서 선언 및 초기화되며 메서드가 완료되면 변수가 소멸됩니다.

  • 인스턴스 변수 − 인스턴스 변수는 클래스 내부에 있지만 메서드 외부에있는 변수입니다. 이러한 변수는 클래스가 인스턴스화 될 때 초기화됩니다. 인스턴스 변수는 해당 클래스의 모든 메서드, 생성자 또는 블록 내부에서 액세스 할 수 있습니다. ss.

  • 클래스 변수-클래스 변수는 정적 키워드를 사용하여 모든 메서드 외부의 클래스 내에서 선언 된 변수입니다.

클래스는 다양한 종류의 메서드 값에 액세스하기 위해 여러 메서드를 가질 수 있습니다. 위의 예에서 barking (), hungry () 및 sleeping ()은 메소드입니다.

다음은 Java 언어 클래스를 살펴볼 때 논의해야 할 중요한 주제 중 일부입니다.

생성자

클래스에 대해 논의 할 때 가장 중요한 하위 주제 중 하나는 생성자입니다. 모든 클래스에는 생성자가 있습니다. 클래스에 대한 생성자를 명시 적으로 작성하지 않으면 Java 컴파일러는 해당 클래스에 대한 기본 생성자를 빌드합니다.

새 객체가 생성 될 때마다 적어도 하나의 생성자가 호출됩니다. 생성자의 주요 규칙은 클래스와 동일한 이름을 가져야한다는 것입니다. 클래스는 생성자를 두 개 이상 가질 수 있습니다.

다음은 생성자의 예입니다.-

public class Puppy { public Puppy() { } public Puppy(String name) { // This constructor has one parameter, name. }}

Java는 클래스의 인스턴스를 하나만 생성 할 수있는 싱글 톤 클래스도 지원합니다.

참고 : 두 가지 유형의 생성자가 있습니다. 생성자에 대해서는 다음 장에서 자세히 설명하겠습니다.

객체 생성

앞서 언급했듯이 클래스는 객체에 대한 청사진을 제공합니다. 따라서 기본적으로 객체는 클래스에서 생성됩니다. Java에서 new 키워드는 새로운 객체를 생성하는 데 사용됩니다.

클래스에서 객체를 생성 할 때 세 단계가 있습니다.-

  • 선언-변수 선언 개체 유형이있는 변수 이름으로.

  • Instantiation- “new”키워드는 개체를 만드는 데 사용됩니다.

  • Initialization- “new”키워드 뒤에 생성자 호출이 이어집니다. 이 호출은 새 객체를 초기화합니다.

다음은 객체 생성의 예입니다. −

컴파일하고 위의 프로그램을 실행하면 다음 결과가 생성됩니다.

출력

Passed Name is :tommy

인스턴스 변수 및 메서드 액세스

인스턴스 변수와 메소드는 생성 된 객체를 통해 액세스됩니다. 인스턴스 변수에 액세스하려면 다음은 정규화 된 경로입니다.

이 예제는 클래스의 인스턴스 변수와 메서드에 액세스하는 방법을 설명합니다.

위 프로그램을 컴파일하고 실행하면 다음과 같은 결과가 나옵니다-

출력

Name chosen is :tommyPuppy"s age is :2Variable Value :2

소스 파일 선언 규칙

이 섹션의 마지막 부분에서 이제 소스 파일 선언 규칙을 살펴 보겠습니다. 이러한 규칙은 소스 파일에서 클래스, import 문 및 패키지 문을 선언 할 때 필수적입니다.

  • 소스 파일 당 하나의 공개 클래스 만있을 수 있습니다.

  • 소스 파일에는 여러 개의 비공개 클래스가있을 수 있습니다.

  • 공용 클래스 이름은 소스 파일의 이름이어야하며 끝에 .java가 추가되어야합니다. 예 : 클래스 이름은 공용 클래스 Employee {}입니다. 소스 파일은 Employee.java 여야합니다.

  • 클래스가 패키지 내부에 정의 된 경우 패키지 문은 소스 파일의 첫 번째 문이어야합니다.

  • p>

  • import 문이있는 경우 패키지 문과 클래스 선언. 패키지 문이없는 경우 import 문은 소스 파일의 첫 번째 줄이어야합니다.

  • 가져 오기 및 패키지 문은 소스 파일에있는 모든 클래스를 의미합니다. . 소스 파일의 다른 클래스에 대해 다른 가져 오기 및 / 또는 패키지 문을 선언 할 수 없습니다.

클래스에는 여러 액세스 수준이 있으며 클래스 유형도 다릅니다. 추상 클래스, 최종 클래스 등. 액세스 수정 자 장에서이 모든 것에 대해 설명 할 것입니다.

위에서 언급 한 클래스 유형 외에도 Java에는 내부 클래스 및 익명 클래스라는 특수 클래스도 있습니다.

Java 패키지

간단히 말하면 클래스와 인터페이스를 분류하는 방법입니다. Java로 애플리케이션을 개발할 때 수백 개의 클래스와 인터페이스가 작성되므로 이러한 클래스를 분류하는 것은 필수 일뿐만 아니라 삶을 훨씬 쉽게 만듭니다.

문 가져 오기

패키지와 클래스 이름이 포함 된 정규화 된 이름이 제공되면 컴파일러가 소스 코드 또는 클래스를 쉽게 찾을 수 있습니다. Import 문은 컴파일러가 특정 클래스를 찾을 수있는 적절한 위치를 제공하는 방법입니다.

예를 들어, 다음 줄은 컴파일러에게 java_installation / java / io 디렉토리에서 사용 가능한 모든 클래스를로드하도록 요청합니다.

import java.io.*;

간단한 사례 연구

사례 연구를 위해 두 개의 클래스를 만들 것입니다. Employee와 EmployeeTest입니다.

먼저 메모장을 열고 다음 코드를 추가합니다. 이것이 Employee 클래스이고 클래스가 공용 클래스임을 기억하십시오. 이제이 소스 파일을 Employee.java라는 이름으로 저장합니다.

Employee 클래스에는 이름, 나이, 지정 및 급여의 네 가지 인스턴스 변수가 있습니다. 클래스에는 매개 변수를 사용하는 명시 적으로 정의 된 생성자가 하나 있습니다.

이 자습서에서 이전에 언급했듯이 처리는 주 메서드에서 시작됩니다. 따라서이 Employee 클래스를 실행하려면 메인 메소드가 있어야하고 객체가 생성되어야합니다. 이 작업에 대해 별도의 클래스를 만들 것입니다.

다음은 Employee 클래스의 두 인스턴스를 만들고 각 개체에 대한 메서드를 호출하여 각 변수에 대한 값을 할당하는 EmployeeTest 클래스입니다.

EmployeeTest.java 파일에 다음 코드를 저장합니다.

이제 두 클래스를 모두 컴파일 한 다음 EmployeeTest를 실행하여 다음과 같은 결과를 확인합니다.-

Output

다음은 무엇입니까?

다음 세션에서는 Java의 기본 데이터 유형과 Java 애플리케이션을 개발할 때 어떻게 사용할 수 있는지에 대해 논의합니다.

광고

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다