java class vs object how use class
이 튜토리얼에서는 OOPS 개념 중 하나에 대해 자세히 설명합니다. 예제와 함께 Java 클래스 및 객체에 대한 모든 것을 살펴 보겠습니다.
객체 지향 프로그래밍은 데이터를 강조하므로 객체라는 엔티티를 중심으로 회전한다는 것을 알고 있습니다. 클래스는 이러한 개체의 청사진 역할을합니다.
클래스와 그 구성 요소를 만드는 방법을 살펴 보겠습니다. 또한이 튜토리얼의 뒷부분에서 프로그래밍 예제를 사용하여 Java에서 객체를 만들고 초기화하는 방법을 배웁니다.
=> 독점적 인 Java 교육 자습서 시리즈를 보려면 여기를 방문하십시오.
학습 내용 :
자바의 클래스와 객체
Java에서 모든 기능, 속성, 메소드 등은 클래스와 객체에 연결됩니다. C ++에서 할 수있는 것처럼 클래스를 선언하지 않고는 main 함수만으로 Java 프로그램을 작성할 수 없습니다.
예를 들면 차량에 프로그램을 작성하려는 경우 차량은 실시간 객체입니다. 그러나 차량은 다양한 유형이 될 수 있습니다. 이는 차량에 자동차, 트럭, 스쿠터, 자전거 등과 같은 다양한 값을 가정 할 수있는 유형 속성이 있음을 의미합니다.
그래서 우리가 차량 객체를 자바로 표현하는 방법은“Vehicle”클래스를 생성하고 그 다양한 속성을 정의하는 것입니다. 그런 다음 car, bike 등과 같은 다양한 Vehicle 클래스 객체를 선언 할 수 있습니다.
클래스 내에서 Vehicle의 속성을 클래스 속성 (데이터 멤버)과 startVehicle (), stopVehicle () 등과 같은 메서드로 정의 할 수 있습니다.
이런 식으로 Java에서 가장 작은 엔티티도 표현하려면 먼저 객체를 식별 한 다음 청사진이나 클래스를 정의해야합니다.
따라서 먼저 클래스와 객체에 대한 모든 것을 배우고 Java에서 OOP의 다른 개념으로 넘어가 보겠습니다.
자바 클래스
Java로 프로그램을 개발하기 위해 우리는 객체와 클래스를 사용합니다. Java의 클래스는 논리적 단위 일 뿐이지 만 Java의 객체는 물리적 및 논리적 엔티티입니다.
Java에서 객체는 무엇입니까?
개체는 상태가 있고 동작을 나타내는 개체입니다. 예를 들면 펜, 랩톱, 모바일, 테이블, 의자, 자동차 등과 같은 실제 개체는 개체입니다. 이러한 모든 개체는 물리적 (유형) 또는 논리적 (무형)입니다.
무형 물체는 대부분 항공 시스템, 은행 시스템 등입니다. 이들은 특정 상태와 행동을 가진 논리적 실체입니다.
모든 개체에는 다음과 같은 주요 특성이 있습니다.
- 정체: 고유 ID는 개체 ID를 정의합니다. 이 ID는 일반 사용자에게 표시되지 않지만 내부적으로 JVM은이 ID를 사용하여 개체를 고유하게 식별합니다.
- 상태: 개체의 현재 데이터 또는 개체의 값을 정의합니다.
- 행동: 이 기능은 개체의 기능 (동작)을 나타냅니다. 예를 들면 위에서 논의한 Vehicle 객체는 시작, 중지 등의 동작을 가지고 있습니다.
클래스를 정의 할 때 객체 정의를 다시 살펴 보겠습니다.
그래서 클래스는 무엇입니까?
우리는 객체 지향 프로그래밍의 주요 구성 요소가 객체라는 것을 알고 있습니다. 특정 유형의 객체를 구축하려면 청사진이 필요합니다. 이 청사진은 객체를 만드는 데 도움이되는 일련의 지침을 제공합니다.
예를 들면 집을 짓고 싶다고합시다. 여기 집은 대상입니다. 집을 지 으려면 집에 대한 초기 청사진이 필요합니다. 우리가 원하는대로 직접 집을 지을 수는 없습니다.
이것이 수업이 그림으로 들어오는 곳입니다. 따라서 개체 또는 실제 개체를 구축하기 위해 먼저 개체의 내용과 동작을 결정하는 청사진을 갖게됩니다. 이것은 객체 지향 프로그래밍의 클래스로 알려져 있습니다.
따라서 클래스는 ' 청사진 또는 템플릿이며 객체의 상태와 동작을 정의합니다. ”.
클래스를 개체 그룹으로 볼 수도 있습니다. 이 그룹에는 모든 개체에 공통적 인 몇 가지 속성이 있습니다.
Java에서 클래스를 만드는 방법을 살펴 보겠습니다.
Java에서 클래스를 만드는 방법
Java에서 클래스 정의의 일반 클래스 구문은 다음과 같습니다.
class extends implements interface_name> { //fields; //constructors //methods; //blocks }
위의 클래스 선언은 예제 클래스 선언과 함께 아래 다이어그램에 표시됩니다.
MP3 변환기 검토에 자유로운 유튜브
클래스 선언의 수퍼 클래스와 인터페이스는 선택 사항입니다. 다른 수퍼 클래스에서 확장하거나 인터페이스를 구현하지 않고 독립형 클래스를 갖도록 선택할 수 있습니다.
위의 일반 정의는 클래스 정의에 존재할 수있는 구성 요소도 보여줍니다.
클래스의 구성 요소
클래스의 구성 요소는 다음과 같습니다.
위의 다이어그램에 표시된 것처럼 Java 클래스에는 다음 구성 요소가 포함됩니다.
- 필드
- 행동 양식
- 생성자
- 블록
- 중첩 클래스 및 인터페이스
다음으로 처음 세 가지 구성 요소에 대해 설명합니다. 이러한 구성 요소는 모든 클래스에 필요합니다. 중첩 된 클래스와 인터페이스는 완전히 다른 주제이며 이후 튜토리얼에서 설명합니다.
클래스 구성 요소에 대한 논의를 시작하기 전에 먼저 Customer_Account 클래스를 정의하겠습니다.
class Customer_Account { static String bank_name; //class variable long customer_accountNo; //instance variable String customer_name; //instance variable //constructor Customer_Account (long accountnum, String accName){ customer_accountNo = accountnum; customer_name = accName; } //method void printInfo(){ System.out.println ('Customer Account Details:'); System.out.println ('Customer Account Number: ' + customer_accountNo); System.out.println (' Customer Name: '+customer_name); } }
필드
필드는 클래스의 변수 또는 데이터입니다. 필드는 Java에서 멤버 변수라고도합니다. 필드와 변수라는 용어를 같은 의미로 사용합니다.
일반적으로 클래스의 필드는 두 가지 유형입니다.
# 1) 클래스 변수 : 클래스 변수는 정적 변수가되도록 '정적'이라는 단어로 선언됩니다. 즉,이 유형의 변수에는 해당 클래스에 대해 존재하는 인스턴스 또는 객체 수에 관계없이 클래스 당 하나의 복사본 만 있습니다.
# 2) 인스턴스 변수 : 이들은 클래스 변수의 반대입니다. 이러한 변수에는 런타임에 각 클래스 인스턴스에 대해 할당 된 별도의 메모리가 있기 때문에 데이터 멤버를 인스턴스 변수라고합니다.
위의 클래스 정의에서 우리는 클래스와 인스턴스 변수를 모두 보여주었습니다. static 한정자로 선언 된 'bank_name'변수는 클래스 변수입니다. 다른 두 변수 'customer_accNo'및 'customer_name'은 인스턴스 변수입니다.
빌더
생성자는 일반적으로 클래스의 인스턴스를 초기화하는 데 사용되는 특수 메서드입니다. 생성자는 반환 유형이없고 클래스와 이름이 같으며 매개 변수를 포함하거나 포함하지 않을 수 있습니다.
위의 클래스 정의에는 생성자가 하나 있습니다.
Customer_Account (long accountnum, String accName)
이후 튜토리얼에서 생성자에 대해 자세히 알아볼 것입니다.
방법
Java 클래스의 메서드는 개체 및 해당 멤버의 동작을 정의하는 함수입니다.
클래스 메서드는 프로그램에서 일반 메서드를 만드는 것과 같은 방식으로 생성됩니다. 클래스 메소드 내에서 Java에서 제공하는 모든 구성과 기능을 사용할 수 있습니다.
예제 클래스 정의에는 클래스의 다양한 데이터 멤버를 표시하는 'printInfo'메서드가 있습니다.
Java 클래스 메소드에는 일반적으로 다음 프로토 타입이 있습니다.
method_name(parameter list…){ //code blocks }
클래스 메서드는 점 연산자를 사용하여 클래스 인스턴스에 의해 액세스됩니다. 따라서 위 클래스 'Customer_Account'의 인스턴스 acc를 생성하면 아래 코드 줄을 사용하여 printInfo에 액세스 할 수 있습니다.
acc.printInfo();
access_modifier가 정적이면 메서드에 액세스하는 데 인스턴스가 필요하지 않습니다. 클래스 이름을 직접 사용하여 메소드에 액세스 할 수 있습니다.
Custome_Account.printInfo ();
자바 클래스 예
Java에서 클래스 및 객체를 보여주는 간단한 예제를 구현해 보겠습니다.
//declare a class with three data members class Student{ int student_id; String student_name; Double student_marks; } class Main{ public static void main(String args()){ //create a Student object using new operator Student student_object = new Student(); //display data members of the class. System.out.println('Student Id:' + student_object.student_id); System.out.println('Student Name:' + student_object.student_name); System.out.println('Student Marks:' + student_object.student_marks); } }
산출
위의 프로그램은 학생 클래스를 선언합니다. 세 개의 인스턴스 변수, 즉. student_id, student_name 및 student_marks.
그런 다음 Student_object라는 Student 클래스의 개체를 선언하는 Main 클래스를 정의합니다. 그런 다음 도트 연산자를 사용하여 인스턴스 변수에 액세스하고 해당 값을 인쇄합니다.
위의 프로그램은 클래스 외부의 주요 메소드의 예입니다.
아래 예제에서 우리는 클래스 내에 메인 메소드를 가질 것입니다.
//declare a class with three data members class Student{ int student_id; String student_name; Double student_marks; public static void main(String args()){ //create a Student object using new operator Student student_object = new Student(); //display data members of the class. System.out.println('Student Id:' + student_object.student_id); System.out.println('Student Name:' + student_object.student_name); System.out.println('Student Marks:' + student_object.student_marks); } }
산출
위 프로그램은 주 방법이 Student 클래스 내에 있다는 점을 제외하고는 이전 프로그램과 동일합니다.
자바의 객체
이제 Java의 클래스에 대한 충분한 지식을 얻었으므로 클래스 측면에서 객체를 재정의 할 수 있습니다. 그래서 객체는“ 클래스의 인스턴스 ”. 따라서 우리는 class_name 유형의 변수 또는 인스턴스를 생성하며이를 객체라고합니다.
객체에 대해 기억해야 할 몇 가지 사항 :
- 객체는 클래스와 함께 OOP의 기본 단위로 간주됩니다.
- 개체는 런타임 단위입니다.
- 객체는 클래스의 인스턴스라고합니다.
- 개체에는 동작과 상태가 있습니다.
- 객체는 자신이 인스턴스 인 클래스의 모든 속성과 속성을받습니다. 그러나 어느 시점에서든 각 개체는 서로 다른 상태 또는 변수 값을 갖습니다.
- 객체는 소프트웨어 응용 프로그램에서 실시간 엔티티를 나타내는 데 사용됩니다.
- 단일 클래스는 여러 개체를 가질 수 있습니다.
- 개체는 메서드 호출을 통해 서로 상호 작용합니다.
개체를 인스턴스화하는 방법
개체의 선언은 또한 개체의 인스턴스화 자바에서. 객체 선언은 변수 선언과 동일합니다.
온라인에서 YouTube를 mp4로 무료로 변환하십시오.
예를 들면 위에서 선언 한 Customer_Account 클래스를 사용하여 개체를 선언 할 수 있습니다.
따라서 다음과 같이 Customer_Account의 개체를 선언하거나 인스턴스화합니다.
Customer_Account account;
위의 문은 Customer_Account 클래스의 'account'라는 개체를 선언하거나 인스턴스화합니다.
클래스의 객체를 인스턴스화 할 때 클래스는 엄격하게 '구체적인 클래스'여야합니다. 추상 클래스의 객체를 선언 할 수 없습니다.
위의 문은 객체 만 선언합니다. 이 변수를 사용하여 클래스의 메서드를 호출하거나 멤버 변수의 값을 설정할 수 없습니다. 선언 된 객체에 대해 메모리를 할당하지 않았기 때문입니다.
그래서 우리는 그것을 더 사용하기 위해 적절하게 객체를 만들어야합니다.
객체의 실제 생성은 객체 초기화에 의해 수행됩니다. 객체를 선언하고 나면 초기화해야합니다. 그런 다음이 개체를 사용하여 클래스의 멤버 변수와 메서드에 액세스 할 수 있습니다.
개체를 만드는 방법
다음 방법을 사용하여 Java에서 객체를 만들 수 있습니다.
# 1) 새 키워드 사용
새로운 키워드를 사용하여 객체를 초기화 할 수 있습니다. 이 방법은 새 개체를 만드는 데 가장 일반적으로 사용되는 방법입니다.
예를 들면클래스 ABC가 주어지면 다음과 같이 새 클래스 객체를 만들 수 있습니다.
ABC myObj = new ABC ();
위의 문에서 myObj는 new 연산자를 사용하여 만든 새 개체입니다. 이 메서드를 사용하여 만든 개체는 모든 데이터 멤버의 초기 값을 갖습니다. new 키워드 다음에 나오는 구조 ABC ()는 클래스 ABC의 기본 생성자입니다.
또한 매개 변수로 생성자를 정의하고 new 키워드로 해당 생성자를 호출하여 원하는 데이터 멤버 값으로 객체를 만들 수 있습니다.
# 2) Class.forName () 메서드 사용
Java는 시스템의 클래스 및 객체에 대한 모든 정보를 유지하는 'Class'라는 클래스를 제공합니다. 'Class'클래스의 forName () 메서드를 사용하여 개체를 만들 수 있습니다. forName 메서드에 대한 인수로 정규화 된 클래스 이름을 전달해야합니다.
그런 다음 클래스의 인스턴스를 반환 할 newInstance () 메서드를 호출 할 수 있습니다.
다음 코드 행이이를 보여줍니다.
ABC myObj = Class.forName (“com.myPackage.ABC”).newInstance();
위의 문은 ABC 클래스의 새 개체 myObj를 만듭니다.
# 3) clone () 메서드
Java의 객체 클래스는 clone () 메서드에 인수로 전달 된 객체의 복제 또는 복사본을 반환하는 clone () 메서드를 제공합니다.
예를 들면
5 년 경력의 셀레늄 인터뷰 질문
ABC myobj1 = new ABC (); ABC testObj = (ABC) myobj1.clone ();
# 4) 역 직렬화로
Java는 저장된 파일에서 객체를 읽는 deserialization이라는 기술을 제공합니다. 우리는 별도의 튜토리얼에서 역 직렬화를 배울 것입니다.
개체를 초기화하는 방법
이 섹션에서는 Java에서 객체를 초기화하는 방법에 대해 설명합니다. 초기화는 클래스의 데이터 멤버에 값을 할당하는 것을 말합니다. 다음은 Java에서 개체를 초기화하는 데 사용되는 몇 가지 메서드입니다.
# 1) 참조를 통해 객체 초기화
생성 된 참조 개체는 개체에 값을 저장하는 데 사용됩니다. 할당 연산자를 사용하면됩니다.
참조를 이용한 객체 초기화는 아래 프로그램과 같습니다.
//declare a class with three data members class Student{ int student_id; String student_name; Double student_marks; } class Main{ public static void main(String args()){ //create a Student object using new operator Student student_object = new Student(); //initialization of class members using reference student_object.student_id = 101; student_object.student_name = 'Elena'; student_object.student_marks = 89.93; //display data members of the class. System.out.println('Student Id:' + student_object.student_id); System.out.println('Student Name:' + student_object.student_name); System.out.println('Student Marks:' + student_object.student_marks); } }
산출
위의 프로그램은 세 멤버 변수로 Student 클래스를 선언합니다. 그런 다음 main 메서드에서 new 키워드를 사용하여 Student 클래스의 개체를 만듭니다. 그런 다음 프로그램에 표시된대로 개체의 각 멤버 필드에 데이터를 할당합니다.
# 2) 메소드를 통한 객체 초기화
이 예제에서는 Student 클래스의 두 개체를 만들고 insertRecord 메서드를 호출하여 이러한 개체의 값을 초기화합니다. insertRecord 메소드는 Student 클래스의 멤버 메소드입니다.
//declare a class with three data members class Student{ int student_id; String student_name; Double student_marks; //method to initialize class data members void initialize_object(int id, String name, double marks) { student_id = id; student_name = name; student_marks = marks; } } class Main{ public static void main(String args()){ //create a Student object using new operator Student student_object = new Student(); //initialization of class members through method student_object.initialize_object(27, 'Stefan', 78.86); //display data members of the class. System.out.println('Student Id:' + student_object.student_id); System.out.println('Student Name:' + student_object.student_name); System.out.println('Student Marks:' + student_object.student_marks); } }
산출
# 3) 생성자를 통한 객체 초기화
생성자를 사용하여 객체를 초기화 할 수도 있습니다.
생성자의 사용을 보여주는 프로그램은 다음과 같습니다.
//declare a class with three data members class Student{ int student_id; String student_name; Double student_marks; //constructor for initialization Student(int id, String name, double marks) { student_id = id; student_name = name; student_marks = marks; } } class Main{ public static void main(String args()){ //create a Student object using new operator and initialize it with constructor Student student_object = new Student(27, 'Stefan', 78.86); //display data members of the class. System.out.println('Student Id:' + student_object.student_id); System.out.println('Student Name:' + student_object.student_name); System.out.println('Student Marks:' + student_object.student_marks); } }
산출
이 프로그램에서 'Student 클래스는 매개 변수를 가져와 멤버 변수에 할당하는 매개 변수화 된 생성자를 가지고 있습니다.
Java의 클래스 대 객체
수업 | 목적 |
---|---|
클래스 멤버 필드에는 값이 없습니다. | 모든 개체에는 멤버 필드 및 관련 값의 복사본이 있습니다. |
클래스는 객체 생성을위한 템플릿 또는 청사진입니다. | 객체는 클래스의 인스턴스입니다. |
클래스는 생성 될 때 메모리를 할당하지 않습니다. | 객체는 생성 될 때 메모리가 할당됩니다. |
클래스는 논리적 엔티티입니다. | 개체는 물리적 개체입니다. |
클래스는 클래스 키워드를 사용하여 선언됩니다. | 객체는 new, forName () .newInstance (), clone () 메서드를 사용하여 생성됩니다. |
클래스는 동일한 개체의 그룹입니다. 예 : 클래스 동물 (). | 개체는 특정 개체입니다. 예 : 동물 개 = 새로운 동물 (); |
클래스는 한 번만 선언 할 수 있습니다. | 클래스는 인스턴스 나 객체를 얼마든지 가질 수 있습니다. |
자주 묻는 질문
Q # 1) Class와 Object의 차이점은 무엇입니까?
대답: 클래스는 객체 생성에 사용되는 템플릿입니다. 객체는 클래스의 인스턴스입니다. 클래스는 논리적 엔티티이지만 객체는 물리적 엔티티입니다. 각 개체에는 모든 멤버 변수에 특정 값이있는 상태가 있습니다. 클래스에는 상태가 없습니다.
Q # 2) Java 클래스에는 무엇이 포함됩니까?
대답: 객체 생성을위한 템플릿 또는 청사진 역할을하는 Java 클래스는 속성 또는 필드와 동작 또는 메서드를 정의합니다.
Q # 3) Java에서 클래스를 사용하는 이유는 무엇입니까?
대답: 클래스와 객체를 사용하여 실제 응용 프로그램을 Java로 모델링하여 효율적으로 해결할 수 있습니다. 상태 및 동작이있는 개체는 실제 엔터티를 나타내며 클래스는 청사진 역할을합니다. 따라서 클래스를 빌딩 블록으로 사용하여 복잡한 애플리케이션을 모델링 할 수 있습니다.
Q # 4) 실제 예를 들어 클래스와 객체를 설명하십시오.
대답: 자동차를 객체로 취하면 자동차는 제조, 색상, 엔진, 마일리지 등과 같은 속성을 가질 수 있습니다. 또한 start (), stop (), applybrakes ()와 같은 메소드를 가질 수 있습니다. 따라서 우리는 자동차를 소프트웨어 객체로 모델링 할 수 있습니다. 이제 자동차는 Maruti, Fiat 등과 같은 다양한 브랜드를 가질 수 있습니다.
따라서 이러한 모든 자동차 모델을 나타 내기 위해이 클래스를 인스턴스화하고 원하는 자동차 개체를 가져올 수 있도록 정의 된 모든 공통 속성과 메서드를 포함하는 클래스 템플릿을 가질 수 있습니다.
따라서 실제 객체 자동차는 Java에서 객체로 쉽게 변환 될 수 있습니다.
결론
이 튜토리얼에서 우리는 Java의 클래스와 객체에 대해 자세히 배웠습니다. 클래스와 객체의 정의를 다뤘습니다. 이 자습서에는 클래스 정의, 클래스 구성 요소 및 프로그램에서 클래스를 사용하는 방법에 대한 예제가 자세히 설명되어 있습니다.
또한 적절한 프로그래밍 예제를 통해 선언, 생성, 초기화 등 Java의 객체에 대한 세부 정보를 배웠습니다.
우리는 클래스와 객체의 주요 차이점을 탐구했습니다. 다음 튜토리얼에서는 다른 주제로 넘어갈 클래스의 유형과 생성자에 대해 논의 할 것입니다.