Java에서 클래스와 객체는 실제 개념과 엔터티를 나타내는 데 사용되는 객체 지향 프로그래밍(OOP)의 기본 개념입니다. 클래스는 유사한 속성과 동작을 갖는 개체 그룹을 나타냅니다. 예를 들어, 동물 유형 개 클래스이고 이름이 특정 개입니다. 나사 돌리개 의 대상이다 개 수업.
이 글에서는 Java 객체와 클래스, 그리고 이를 프로그램에서 구현하는 방법에 대해 설명합니다.
자바 클래스
Java의 클래스는 공통 특성/동작 및 공통 속성/속성을 공유하는 객체 집합입니다. 객체가 생성되는 사용자 정의 청사진 또는 프로토타입입니다. 예를 들어 Student는 클래스이고 Ravi라는 특정 학생은 개체입니다.
Java 클래스의 속성
- 클래스는 실제 개체가 아닙니다. 이는 객체가 생성되는 템플릿, 청사진 또는 프로토타입일 뿐입니다.
- 클래스는 메모리를 차지하지 않습니다.
- 클래스는 다양한 데이터 유형의 변수 그룹과 메소드 그룹입니다.
- Java의 클래스에는 다음이 포함될 수 있습니다.
- 데이터 멤버
- 방법
- 건설자
- 중첩 클래스
- 상호 작용
Java의 클래스 선언
access_modifier class < class_name>{ 데이터 멤버; 방법; 건설자; 중첩 클래스; 상호 작용; }> Java 클래스의 예
자바
// Java Program for class example> class> Student {> >// data member (also instance variable)> >int> id;> >// data member (also instance variable)> >String name;> >public> static> void> main(String args[])> >{> >// creating an object of> >// Student> >Student s1 =>new> Student();> >System.out.println(s1.id);> >System.out.println(s1.name);> >}> }> |
>
>
자바
// Java program to Illustrate Creation of Object> // Using new Instance> // Main class> class> GFG {> >// Declaring and initializing string> >String name =>'GeeksForGeeks'>;> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Try block to check for exceptions> >try> {> >Class cls = Class.forName(>'GFG'>);> >// Creating object of main class> >// using instance method> >GFG obj = (GFG)cls.newInstance();> >// Print and display> >System.out.println(obj.name);> >}> >catch> (ClassNotFoundException e) {> >e.printStackTrace();> >}> >catch> (InstantiationException e) {> >e.printStackTrace();> >}> >catch> (IllegalAccessException e) {> >e.printStackTrace();> >}> >}> }> |
>
>
자바를 인쇄하는 방법
자바
// Java program to Illustrate Creation of Object> // Using clone() method> // Main class> // Implementing Cloneable interface> class> GFG>implements> Cloneable {> >// Method 1> >@Override> >protected> Object clone()> >throws> CloneNotSupportedException> >{> >// Super() keyword refers to parent class> >return> super>.clone();> >}> >String name =>'GeeksForGeeks'>;> >// Method 2> >// main driver method> >public> static> void> main(String[] args)> >{> >GFG obj1 =>new> GFG();> >// Try block to check for exceptions> >try> {> >GFG obj2 = (GFG)obj1.clone();> >System.out.println(obj2.name);> >}> >catch> (CloneNotSupportedException e) {> >e.printStackTrace();> >}> >}> }> |
>
>
출력 1
0 null>
출력 2
GeeksForGeeks>
출력 3
GeeksForGeeks>
Java 클래스의 구성요소
일반적으로 클래스 선언에는 다음 구성 요소가 순서대로 포함될 수 있습니다.
- 수정자 : 클래스는 공개되거나 기본 액세스 권한을 가질 수 있습니다(참조 이것 자세한 내용은).
- 클래스 키워드: class 키워드는 클래스를 생성하는 데 사용됩니다.
- 수업 이름: 이름은 첫 글자(관례에 따라 대문자)로 시작해야 합니다.
- 슈퍼클래스(있는 경우): 키워드가 앞에 오는 클래스의 부모(수퍼클래스) 이름(있는 경우)입니다. 클래스는 하나의 상위 클래스만 확장(서브클래스)할 수 있습니다.
- 인터페이스(있는 경우): 키워드 Implements가 앞에 오는 클래스에 의해 구현된 인터페이스의 쉼표로 구분된 목록입니다(있는 경우). 클래스는 둘 이상의 인터페이스를 구현할 수 있습니다.
- 몸: 클래스 본문은 중괄호({ })로 둘러싸여 있습니다.
생성자는 새 개체를 초기화하는 데 사용됩니다. 필드는 클래스와 해당 개체의 상태를 제공하는 변수이고, 메서드는 클래스와 해당 개체의 동작을 구현하는 데 사용됩니다.
실시간 애플리케이션에서 사용되는 다양한 유형의 클래스가 있습니다. 중첩 클래스 , 익명 수업 , 그리고 람다 표현식 .
자바 객체
Java의 객체는 객체 지향 프로그래밍의 기본 단위이며 실제 엔터티를 나타냅니다. 객체는 클래스의 속성과 메서드를 사용하기 위해 생성된 클래스의 인스턴스입니다. 일반적인 Java 프로그램은 아시다시피 메서드를 호출하여 상호 작용하는 많은 객체를 생성합니다. 객체는 다음으로 구성됩니다.
- 상태 : 객체의 속성으로 표현됩니다. 또한 개체의 속성을 반영합니다.
- 행동 : 객체의 메소드로 표현됩니다. 또한 다른 개체에 대한 개체의 반응을 반영합니다.
- 신원 : 개체에 고유한 이름을 부여하고 한 개체가 다른 개체와 상호 작용할 수 있도록 합니다.
개체의 예: 개
자바 객체
객체는 현실 세계에서 발견되는 것들에 해당합니다. 예를 들어, 그래픽 프로그램에는 원, 사각형, 메뉴 등의 개체가 있을 수 있습니다. 온라인 쇼핑 시스템에는 장바구니, 고객, 제품 등의 개체가 있을 수 있습니다.
메모: 기본이 아닌 데이터 유형인 객체를 생성하면 항상 힙 메모리에 할당됩니다.
객체 선언(클래스 인스턴스화라고도 함)
클래스의 객체가 생성되면 클래스는 다음과 같이 생성됩니다. 인스턴스화 . 모든 인스턴스는 클래스의 속성과 동작을 공유합니다. 그러나 해당 속성의 값, 즉 상태는 각 객체마다 고유합니다. 단일 클래스에는 인스턴스가 여러 개 있을 수 있습니다.
예:
Java 객체 선언
(유형 이름;)과 같은 변수를 선언합니다. 이는 유형이 유형인 데이터를 참조하기 위해 이름을 사용할 것임을 컴파일러에 알립니다. 기본 변수의 경우 이 선언은 변수에 대한 적절한 메모리 양을 예약합니다. 따라서 참조 변수의 경우 유형은 엄격하게 구체적인 클래스 이름이어야 합니다. 일반적으로 우리는 캔트 추상 클래스나 인터페이스의 객체를 만듭니다.
Dog tuffy;>
이와 같이 참조 변수(tuffy)를 선언하면 객체가 실제로 생성되어 할당될 때까지 해당 값은 결정되지 않습니다(null). 단순히 참조 변수를 선언하는 것만으로는 객체가 생성되지 않습니다.
Java 객체 초기화
new 연산자는 새 객체에 메모리를 할당하고 해당 메모리에 대한 참조를 반환하여 클래스를 인스턴스화합니다. new 연산자는 클래스 생성자도 호출합니다.
예:
자바
// Class Declaration> public> class> Dog {> >// Instance Variables> >String name;> >String breed;> >int> age;> >String color;> >// Constructor Declaration of Class> >public> Dog(String name, String breed,>int> age,> >String color)> >{> >this>.name = name;> >this>.breed = breed;> >this>.age = age;> >this>.color = color;> >}> >// method 1> >public> String getName() {>return> name; }> >// method 2> >public> String getBreed() {>return> breed; }> >// method 3> >public> int> getAge() {>return> age; }> >// method 4> >public> String getColor() {>return> color; }> >@Override> public> String toString()> >{> >return> (>'Hi my name is '> +>this>.getName()> >+>'.
My breed,age and color are '> >+>this>.getBreed() +>','> +>this>.getAge()> >+>','> +>this>.getColor());> >}> >public> static> void> main(String[] args)> >{> >Dog tuffy> >=>new> Dog(>'tuffy'>,>'papillon'>,>5>,>'white'>);> >System.out.println(tuffy.toString());> >}> }> |
자바 비교 방법
>
>산출
Hi my name is tuffy. My breed,age and color are papillon,5,white>
메서드/함수를 사용하여 초기화합니다.
자바
안드로이드 프로세스 acore가 계속 중지됩니다.
public> class> GFG {> >// sw=software> >static> String sw_name;> >static> float> sw_price;> >static> void> set(String n,>float> p)> >{> >sw_name = n;> >sw_price = p;> >}> >static> void> get()> >{> >System.out.println(>'Software name is: '> + sw_name);> >System.out.println(>'Software price is: '> >+ sw_price);> >}> >public> static> void> main(String args[])> >{> >GFG.set(>'Visual studio'>,>0>.0f);> >GFG.get();> >}> }> |
>
>산출
Software name is: Visual studio Software price is: 0.0>
이 클래스에는 단일 생성자가 포함되어 있습니다. 생성자의 선언이 클래스와 동일한 이름을 사용하고 반환 유형이 없기 때문에 생성자를 인식할 수 있습니다. Java 컴파일러는 인수의 수와 유형을 기준으로 생성자를 구별합니다. 생성자는 개 클래스는 4개의 인수를 취합니다. 다음 명령문은 해당 인수의 값으로 tuffy, papillon,5 및 white를 제공합니다.
Dog tuffy = new Dog('tuffy','papillon',5, 'white');> 이 명령문을 실행한 결과는 다음과 같이 설명할 수 있습니다.
Java 객체의 메모리 할당
메모: 모든 수업은 최소한 하나 건설자. 클래스가 명시적으로 선언하지 않은 경우 Java 컴파일러는 기본 생성자라고도 하는 인수 없는 생성자를 자동으로 제공합니다. 이 기본 생성자는 클래스 부모의 인수 없는 생성자를 호출합니다(즉, super();라는 명령문이 하나만 포함되어 있으므로). 물체 클래스에 다른 상위가 없는 경우 클래스 생성자(Object 클래스는 직접 또는 간접적으로 모든 클래스의 상위이므로).
클래스의 객체를 생성하는 방법
Java에서 객체를 생성하는 방법에는 네 가지가 있습니다. 엄밀히 말하면, 방법은 오직 하나뿐입니다( 새로운 키워드), 나머지는 내부적으로 새로운 예어.
1. 새 키워드 사용
Java에서 객체를 생성하는 가장 일반적이고 일반적인 방법입니다.
예:
// creating object of class Test Test t = new Test();>
2. Class.forName(String className) 메소드 사용
java.lang 패키지에는 Class라는 이름의 사전 정의된 클래스가 있습니다. forName(String className) 메소드는 주어진 문자열 이름을 가진 클래스와 연관된 Class 객체를 반환합니다. 클래스에 대해 완전한 이름을 지정해야 합니다. 이 Class 객체에서 새 Instance() 메서드를 호출하면 주어진 문자열 이름을 가진 클래스의 새 인스턴스가 반환됩니다.
// creating object of public class Test // consider class Test present in com.p1 package Test obj = (Test)Class.forName('com.p1.Test').newInstance();> 3. clone() 메소드 사용
clone() 메소드는 Object 클래스에 있습니다. 객체의 복사본을 생성하고 반환합니다.
// creating object of class Test Test t1 = new Test(); // creating clone of above object Test t2 = (Test)t1.clone();>
4. 역직렬화
역직렬화는 파일에 저장된 상태에서 객체를 읽는 기술입니다. 인용하다 Java의 직렬화/역직렬화
FileInputStream file = new FileInputStream(filename); ObjectInputStream in = new ObjectInputStream(file); Object obj = in.readObject();>
한 가지 유형으로만 여러 객체 생성(좋은 습관)
실시간으로 우리는 다양한 방법으로 클래스의 다양한 객체가 필요합니다. 이를 저장하기 위해 다수의 참조를 생성하는 것은 좋은 습관이 아니므로 정적 참조 변수를 선언하고 필요할 때마다 사용합니다. 이 경우 메모리 낭비가 줄어듭니다. 더 이상 참조되지 않는 객체는 가비지 컬렉터 자바의.
예:
Test test = new Test(); test = new Test();>
상속 시스템에서는 하위 클래스 객체를 저장하기 위해 상위 클래스 참조 변수를 사용합니다. 이 경우 동일한 참조 변수를 사용하여 다른 하위 클래스 객체로 전환할 수 있습니다.
예:
class Animal {} class Dog extends Animal {} class Cat extends Animal {} public class Test { // using Dog object Animal obj = new Dog(); // using Cat object obj = new Cat(); }> Java의 익명 객체
익명 개체는 인스턴스화되지만 참조 변수에 저장되지 않는 개체입니다.
- 즉각적인 메소드 호출에 사용됩니다.
- 메서드 호출 후에는 삭제됩니다.
- 그들은 다양한 도서관에서 널리 사용됩니다. 예를 들어, AWT 라이브러리에서는 이벤트 캡처(예: 키 누르기)에 대한 일부 작업을 수행하는 데 사용됩니다.
- 아래 예에서는 키 버튼(btn이 참조함)을 누르면 핸들 메소드를 호출하기 위한 EventHandler 클래스의 익명 객체가 생성됩니다.
btn.setOnAction(new EventHandler() { public void handle(ActionEvent event) { System.out.println('Hello World!'); } });> Java 클래스와 객체의 차이점
Java에서 클래스와 객체의 차이점은 다음과 같습니다.
| 수업 | 물체 |
|---|---|
| 클래스는 객체의 청사진입니다. 객체를 생성하는데 사용됩니다. | 객체는 클래스의 인스턴스입니다. |
| 클래스가 선언될 때 메모리가 할당되지 않습니다. | 객체가 생성되자마자 메모리가 할당됩니다. |
| 클래스는 유사한 객체의 그룹입니다. | 객체는 책, 자동차 등과 같은 실제 개체입니다. |
| 클래스는 논리적 엔터티입니다. | 객체는 물리적 실체입니다. |
| 클래스는 한 번만 선언할 수 있습니다. | 요구 사항에 따라 객체를 여러 번 생성할 수 있습니다. |
| 클래스의 예로 자동차를 들 수 있습니다. | 클래스 자동차의 대상은 BMW, Mercedes, Ferrari 등이 될 수 있습니다. |