types classes java
이 튜토리얼은 Abstract, Concrete, Final, Inner, POJO, Static 및 기타 특수 클래스와 같은 Java의 다양한 유형의 클래스에 대해 설명합니다.
이전 튜토리얼에서 Java의 클래스와 객체에 대해 논의했습니다. Java의 클래스는 템플릿 또는 청사진입니다. 유사한 개체의 컬렉션으로 정의 할 수도 있습니다. 클래스 유형의 객체를 정의한 다음 이러한 객체를 통해 통신합니다.
각 개체는 상태와 동작이있는 클래스의 인스턴스입니다.
=> 독점적 인 Java 교육 자습서 시리즈를 보려면 여기를 방문하십시오.
학습 내용 :
Java의 클래스 유형 – 소개
우리 모두는 클래스에 다음 구성 요소가 있음을 알고 있습니다.
- 수정 자 : 클래스에 대한 액세스를 지정하십시오.
- ClassName : 클래스 이름입니다.
- 키워드 : 클래스가 클래스 또는 인터페이스를 확장하거나 구현 하는지를 제안하는 키워드입니다.
- 중괄호 {}로 묶인 Body 클래스
사용 된 다른 수정 자, 지정된 클래스 본문 및 사용 된 키워드에 따라 Java에는 다양한 유형의 클래스가 있습니다.
- 구체적인 클래스 : 메소드의 구체적인 구현이있는 일반 클래스입니다.
- POJO 클래스 : 이것은 개인 멤버 변수와 이러한 변수에 액세스하기위한 getter setter 메소드 만 포함하는 'Plain Old Java Object'입니다.
- 추상 클래스 : 이 클래스에는 하나 이상의 추상 메서드가 있습니다.
- 최종 수업 : 최종 클래스는 상속 될 수 없습니다.
- 정적 클래스 : 정적 멤버 만 포함하는 클래스입니다.
- 이너 클래스 : 내부 클래스는 다른 클래스의 구성원 인 클래스입니다.
이 튜토리얼에서는 예제를 통해 이러한 각 클래스 유형에 대해 설명합니다.
또한 Java에서 특수 클래스로 간주되는 다른 유형의 클래스에 대해서도 설명합니다.
- 익명 클래스 : 이름이없는 클래스.
- 불변 클래스 : 개체를 변경할 수없는 클래스입니다.
- 싱글 톤 클래스 : 단일 인스턴스를 만들 수있는 클래스입니다.
- 개체 클래스 : 모든 Java 기능의 기본 클래스입니다.
- 래퍼 클래스 : Java의 모든 기본 데이터 유형에는 랩퍼 클래스가 있습니다.
그러나 먼저 Java의 main 메소드 또는 시작점을 포함하는 Java의 Main 클래스와 함께 Java에서 클래스를 가져 오는 방법에 대해 간략하게 설명합니다.
Java로 가져 오기
Java에서 프로그램에 기능을 포함 시키려면 'import'문을 사용할 수 있습니다. import 문을 사용하여 전체 패키지를 가져 와서 프로그램에서 기능을 사용하거나 단일 클래스를 포함 할 수도 있습니다.
다음은 import 문의 구문입니다.
import packageName/classname;
java.lang 패키지와 모든 클래스를 가져 오려면 다음 명령문을 작성할 수 있습니다.
import java.lang.*;
프로그램에 Arrays 클래스의 기능을 포함하고 싶다고 가정하면 다음 명령문을 작성할 수 있습니다.
import java.util.Arrays;
import 문은 C / C ++ include 문과 동일합니다. import 문은 Java 프로그램 시작 부분에 첫 번째 문으로 배치됩니다. Java 프로그램에 둘 이상의 명령문이있을 수 있습니다.
자바의 메인 클래스
우리는 Java에서 main () 메소드가 모든 프로그램 실행의 시작점이며 특정 애플리케이션의 모든 클래스에 배치 될 수 있음을 이미 알고 있습니다. 그러나 파일과 클래스가 너무 많은 복잡한 응용 프로그램이있는 경우 Main 클래스를 사용하고이 Main 클래스에 main () 메서드를 배치하는 것이 좋습니다.
class Main{ public static void main(String() args){ System.out.println(“Hello, World!”); } }
JVM은 Main 클래스의 객체를 생성하지 않습니다. 이 논리는 main ()이 정적 메소드이므로 클래스 객체없이 호출 할 수 있다는 것입니다.
Java의 클래스 유형
이제 Java의 클래스 유형에 대해 살펴 보겠습니다. 이러한 각 클래스를 하나씩 설명하고 프로그래밍 예제를 따라갑니다.
# 1) 구체적인 클래스
구체적인 클래스는 Java 프로그램의 모든 일반 클래스입니다. 이 클래스에는 추상 메서드가 없습니다. 구체적인 클래스의 모든 메서드가 완전히 구현되었습니다.
구체적인 클래스는 다른 클래스, 심지어 추상 클래스에서 상속하거나 인터페이스를 구현할 수 있습니다. 구체적인 클래스를 인스턴스화하고 객체를 생성 할 수 있습니다.
구체적인 클래스의 간단한 예가 아래에 나와 있습니다.
public class Main { // Concrete Class example static int total(int val1, int val2) { return val1 + val2; } public static void main(String args()) { int sum = total(100, 108); System.out.println('Total of two integers: ' + sum); } }
산출
위 프로그램은 구체적인 클래스를 보여줍니다. 이 클래스에는 완전한 구현이 있습니다. 불완전하거나 구현되지 않은 것은 없습니다.
# 2) POJO 클래스
POJO (Plain Old Java Object)는 전용 멤버 변수 만 포함하는 클래스입니다. private 멤버 변수와는 별도로 이러한 멤버 변수에서 사용하는 getter 및 setter 메서드 만 포함됩니다.
POJO 클래스에는 동작이 없습니다. 그러나 같음 또는 인터페이스와 같은 일부 메서드를 재정의 할 수 있습니다.
POJO 클래스의 속성 :
- POJO 클래스에는 공용 getter 및 setter 메서드가 있어야합니다.
- 모든 멤버 또는 인스턴스 변수는 전용이어야합니다.
- POJO 클래스는 미리 지정된 클래스 또는 인터페이스를 확장하거나 구현하지 않습니다.
- 미리 지정된 주석은 포함되지 않습니다.
- 인수가없는 생성자가 없습니다 (인수없는 생성자).
다음은 POJO 클래스를 보여주는 Java 프로그램입니다.
//declare a POJO class class POJO_Class { private int daysOfWeek=7; //private variable public int getdaysOfWeek() { //getter return daysOfWeek; } public void setdaysOfWeek(int dow) { //setter this.daysOfWeek = dow; } } public class Main { public static void main(String args()){ POJO_Class pojoDemo = new POJO_Class(); //instance of POJO class System.out.println('Days of the week:' + pojoDemo.getdaysOfWeek()); } }
산출
POJO 클래스의 위의 데모는이 변수에 대한 개인 변수와 getter setter 메서드가 있음을 보여줍니다. 이 멤버 변수에 액세스하려면 getter 메서드를 사용합니다. setter 메서드는 값을 업데이트하는 데 사용됩니다.
# 3) 추상 클래스
추상 클래스는 불완전하거나 구현이 완료되지 않은 클래스입니다. 추상 클래스는 인스턴스화 할 수 없습니다. 다른 클래스에 의해 확장되고 구체적인 클래스를 형성하기 위해 메서드를 구현해야합니다.
추상 클래스는 키워드 'abstract'를 사용하여 선언됩니다. 추상 클래스는 생성자뿐만 아니라 정적 및 최종 메서드를 가질 수 있습니다.
Java로 추상 클래스를 시연 해 보겠습니다.
interface multiply //interface multiply { int product(int num1, int num2); } // abstract class abstract class Product implements multiply { // this is an abstract method to calculate product of two numbers public abstract int product(int num1, int num2); } // Concrete class :this will implement the abstract method above class Main extends Product { public int product(int num1, int num2) { return num1*num2; } // main method public static void main(String args()) { Main obj = new Main(); int prod = obj.product(100, 20); // print product System.out.println('Product of two numbers: ' + prod); } }
산출
위의 프로그램에서 인터페이스 곱셈이 있습니다. 곱하기 인터페이스를 구현하는 추상 클래스 Product를 만듭니다. 제품 내부에는 구현되지 않은 방법 제품이 있습니다. 그런 다음 Product 클래스를 상속하고 제품 메서드를 구현하는 Main 클래스가 있습니다. 나중에 Main 클래스 개체에서이 메서드를 호출합니다.
# 4) 정적 클래스
일반적으로 Java의 정적이란 개별 인스턴스가 아닌 클래스에 속하는 객체를 의미합니다. 따라서 Java의 정적 멤버 또는 메서드는 객체로 액세스 할 필요가없고 클래스 이름을 직접 사용하여 액세스 할 수 있습니다.
Java의 정적 클래스에는 정적 멤버 만 포함될 수 있습니다. 또한 정적 클래스를 인스턴스화 할 수 없습니다.
다음 Java 프로그램은 정적 클래스를 보여줍니다.
class Static_Class { static int total; // static variable static void sum(int val1, int val2) { // static method System.out.print('Static method to calculate sum:' + ' '); total = val1 + val2; System.out.println(val1 + '+' + val2); // print the numbers } static class Nested_Class { // static class static { // static block System.out.println('static block inside a static nested class'); } public void displaySum() { sum(25, 75); // call static method // print the value in static variable total, it holds the sum of two numbers System.out.println('Sum of two numbers:' + total); } } } public class Main { public static void main(String args()) { // declare static class object Static_Class.Nested_Class object = new Static_Class.Nested_Class(); object.displaySum(); // call displaySum method inside a static class } }
산출
위의 클래스는 정적 클래스를 보여줍니다. 여기에 또 다른 구체적인 클래스의 멤버 인 정적 클래스가 있습니다. 정적 클래스 내에서 두 숫자의 합을 계산하고 그 결과를 외부 클래스의 구성원 인 정적 변수에 저장합니다.
# 5) 최종 수업
최종 클래스는 상속되거나 하위 클래스가 될 수없는 클래스입니다. 클래스가 Java에서 final로 선언되면 일종의 상수이며 불변이됩니다.
따라서 클래스를 불변으로 만들려면 final로 선언해야합니다.
//final class final class Base_Class { void Display() { System.out.println('Base_Class::Display()'); } } //class Derived_Class extends Base_Class { //Compile-time error - can't inherit final class class Derived_Class{ void Display() { System.out.println('Derived_Class::Display()'); } } public class Main { public static void main(String() arg) { Base_Class base_obj = new Base_Class(); //create a final class object base_obj.Display(); Derived_Class deri_obj = new Derived_Class(); deri_obj.Display(); } }
산출
위의 프로그램은 먼저 'final'로 표시된 Base_Class를 선언합니다. 따라서 Derived_Class에서 확장하려고하면 컴파일러 오류가 발생합니다. (주석 처리 된 줄). 그러나 객체를 생성하고 Display 메서드를 호출 할 수 있습니다.
# 6) 중첩 클래스 / 내부 클래스
Java에서 Inner 클래스라고도하는 중첩 클래스는 캡슐화를 향상시키는 데 사용됩니다. 중첩 클래스 / 내부 클래스는 다른 클래스에 포함 된 클래스입니다.
클래스에 멤버로 변수와 메서드가있는 것처럼 내부 클래스도 멤버로 가질 수 있습니다.
중첩 클래스는 다음과 같은 구조를 갖습니다.
class OuterClass{ class NestedClass{ //nested class code… } //outerclass code… }
내부 클래스에는 다음과 같은 하위 유형이 있습니다.
- 중첩 된 내부 클래스
- 방법 로컬 내부 클래스
- 익명 내부 클래스
- 정적 중첩 클래스
# 1) 중첩 된 내부 클래스
중첩 된 내부 클래스는 외부 클래스의 전용 멤버 변수에 액세스 할 수 있습니다. 중첩 된 내부 클래스에 액세스 한정자를 적용 할 수도 있습니다.
# 2) 메서드 로컬 이너 클래스
이것은 외부 클래스 메서드 내부에 선언 된 내부 클래스입니다.
# 3) 익명 내부 클래스
익명 내부 클래스는 외부 클래스 내부에 선언 된 내부 클래스이며 이름이 없습니다.
# 4) 정적 중첩 클래스
클래스가 정적 멤버 변수를 갖는 방식은 정적 클래스를 멤버로 가질 수도 있습니다.
Nested / Inner 클래스의 예는 다음과 같습니다.
public class Main { //nested/inner class enclosed inside Main class. class InnerClass { public void inner_print() { System.out.println('Inner class'); } } public static void main(String() args) { System.out.println('Main in Outer class'); } }
산출
Java의 기타 특수 클래스
Java의 불변 클래스
불변 클래스는 불변 객체를 생성합니다. 불변 객체는 객체가 생성되면 내용을 변경할 수없는 객체입니다. 따라서 불변 클래스는 객체가 생성되면 변경할 수없는 클래스입니다.
기본 유형 (Integer, Boolean, Byte 등)에 대한 Java의 모든 랩퍼 클래스는 변경할 수 없습니다. String 클래스도 변경할 수 없습니다.
Java에서 사용자 정의 불변 클래스를 가질 수도 있습니다.
클래스가 변경 불가능하려면 모든 데이터 멤버와 함께 final로 선언되어야합니다. 또한 클래스에는 매개 변수화 된 생성자가 있어야합니다. 모든 멤버 변수에는 getter 메서드가 있어야하지만 setter 메서드는 없어야합니다.
클래스가 불변이 되려면 위의 모든 요구 사항이 충족되어야합니다.
불변 클래스를 보여주기 위해 Java 프로그램을 구현해 보겠습니다.
final class City { final String city_name; final int cityId; //parameterised constructor public City(String name, int id) { this.city_name = name; this.cityId = id; } //getters for member variables public String getcityName() { return city_name; } public int getcityId() { return cityId; } } // Driver class class Main { public static void main(String args()) { City city = new City('New York', 1001); System.out.print('City Id:' + city.getcityId() + ' '); System.out.println('City Name:' + city.getcityName()); //city.cityId = 1002; //cannot assign a value to final variable regNo } }
산출
위의 프로그램에서 우리는 City 클래스를 선언했습니다. 이것은 최종 클래스이며이 클래스에서는 두 개의 멤버 변수와 매개 변수화 된 생성자를 선언했습니다. 또한이 두 멤버 변수에 대해 getter 메서드를 선언했습니다. 따라서 City 클래스는 불변 클래스의 모든 요구 사항을 충족합니다.
main 메서드에서 주석 처리 된 코드 줄을 확인합니다. 이 줄의 주석을 해제하면 멤버 변수의 값을 설정하려고 할 때 컴파일러 오류 (여기 주석에 제공됨)가 표시됩니다.
자바의 싱글 톤 클래스
싱글 톤 클래스는 한 번에 하나의 인스턴스를 허용합니다. Java에서 싱글 톤은 디자인 패턴입니다. 이 디자인 패턴은 어느 시점에서든 클래스의 인스턴스가 하나만 존재하도록합니다. 따라서 싱글 톤으로 정의 된 모든 클래스는 단일 액세스 포인트를 가지며 전역입니다.
응용 프로그램 수명주기의 종료는 일반 클래스와 같은 싱글 톤 클래스를 파괴하지 않습니다. 클래스가 싱글 톤으로 선언되면 객체에 대한 새 요청이있을 때마다 새 인스턴스를 만들지 않습니다.
동일한 인스턴스가 계속해서 사용됩니다. 이렇게하면 대부분 다중 스레드 및 데이터베이스 응용 프로그램의 경우 메모리 공간을 절약 할 수 있습니다.
캐싱, 로깅 등과 같은 활동에 싱글 톤 클래스를 사용할 수 있습니다.
다음 프로그램은 Singleton 클래스를 보여줍니다.
class Singleton { // static variable of type Singleton private static Singleton single_instance = null; // String variable public String str; // private constructor : restricted to this class private Singleton() { str = 'Singleton class::private constructor'; } // create instance of Singleton class using getInstance static method public static Singleton getInstance() { if (single_instance == null) single_instance = new Singleton(); return single_instance; } } class Main { public static void main(String args()) { // instantiate Singleton class with obj1 Singleton obj1 = Singleton.getInstance(); // instantiate Singleton class with obj2 Singleton obj2 = Singleton.getInstance(); System.out.println('obj1(str):' + obj1.str); System.out.println('obj2(str):' + obj2.str); // change variable of instance obj1 obj1.str = (obj1.str).toUpperCase(); System.out.println('
After changing obj1(str):'); System.out.println('obj1(str):' + obj1.str); System.out.println('obj2(str):' + obj2.str); } }
산출
위의 프로그램에서 우리는 개인 생성자로 싱글 톤 클래스를 정의했습니다. String 유형의 멤버 변수를 정의했습니다. 메인 메서드에서 싱글 톤 클래스의 두 인스턴스를 선언합니다. 그런 다음 인스턴스 중 하나를 사용하여 String 변수를 변경합니다.
두 인스턴스 모두에 대해 String 값을 인쇄하면 두 인스턴스 모두에 대해 String 변수 값이 변경되었음을 알 수 있습니다. 따라서 싱글 톤 클래스로 인해 하나의 인스턴스에 대해서만 값을 변경했지만 변경 사항은 모든 인스턴스에 반영됩니다.
다른 인스턴스를 만드는 것처럼 보이지만 항상 동일한 인스턴스를 반환합니다.
자바의 객체 클래스
Object 클래스는 Java의 상위 클래스 또는 첫 번째 클래스입니다. Java 계층 구조의 최상위 수준에 있습니다.
모든 클래스는 Object 클래스를 수퍼 클래스로 가지고 있으므로 Array를 포함한 모든 Java 객체는 Object 클래스 메서드를 구현합니다. 객체 클래스는 'java.lang'패키지에 있습니다.
java.lang.Object에 대한 선언은 다음과 같습니다.
공용 클래스 개체
다음 표는 Object 클래스의 생성자 및 메서드를 설명합니다.
생성자 / 메소드 | 기술 |
---|---|
클래스 getClass () | 객체의 런타임 클래스를 반환합니다. |
객체 클래스 생성자 | |
목적() | 객체 클래스 생성자 |
객체 클래스 메서드 | |
보호 개체 clone () | 개체의 복제본 또는 복사본을 반환합니다. |
부울 같음 (Object obj) | 주어진 객체 obj가이 객체와 같은지 확인합니다. |
보호 된 무효 finalize () | 개체에 대한 모든 참조가 소멸 될 때 가비지 수집기에 의해 호출됩니다. |
int hashCode () | 객체의 해시 코드를 반환합니다. |
무효 통지 () | 대기중인 단일 스레드를 깨우는 데 사용합니다. |
void notifyAll () | 대기중인 모든 스레드를 깨 웁니다. |
문자열 toString () | 객체에 해당하는 String을 반환합니다. |
무효 대기 () | 스레드가 다른 스레드의 알림 메소드에 의해 깨어날 때까지 대기하게합니다. |
무효 대기 (긴 시간 초과) | 스레드가 'timeout'에 지정된 시간이 경과하거나 notify 또는 notifyAll 메소드에 의해 깨어날 때까지 대기하도록합니다. |
void wait (long timeout, int nanos) | 지정된 시간이 경과하거나 다른 스레드가 notify () 또는 notifyAll ()을 호출 할 때까지 스레드가 대기하도록합니다. |
Object 클래스 메소드의 일부를 보여줄 예제 Java 프로그램을 구현해 보겠습니다.
public class Main { public static void main(String() args) { Main t = new Main(); System.out.println('Main class Object HashCode:' + t.hashCode()); t = null; // call garbage collector System.gc(); System.out.println('Main class:End'); } @Override protected void finalize() { System.out.println('Main Class::finalize method called.'); } }
산출
여기에 Main 클래스가 있습니다. 메인 메소드 ()에서 Main 클래스의 객체를 생성합니다. 이 객체는 Object 클래스의 자손이며 모든 Object 클래스 메서드를 지원합니다. 따라서이 객체를 사용하고 hashCode (), System.GC (), finalize () 등과 같은 몇 가지 Object 클래스 메서드를 호출합니다.
자바의 래퍼 클래스
Java는 원시 데이터 유형을 객체로 또는 그 반대로 변환하는 메커니즘이있는 래퍼 클래스라는 기능을 제공합니다. 래퍼 클래스는 int, char 등과 같은 기본 유형을 객체로 나타내는 클래스입니다.
따라서 Java의 각 기본 데이터 유형에는 해당하는 랩퍼 클래스가 있습니다.
다음 표는 기본 데이터 유형과 이에 상응하는 랩퍼 클래스를 보여줍니다.
기본 유형 | 래퍼 유형 |
---|---|
흙손 | 흙손 |
부울 | 부울 |
숯 | 캐릭터 |
바이트 | 바이트 |
짧은 | 짧은 |
int | 정수 |
긴 | 긴 |
더블 | 더블 |
프리미티브를 객체로, 객체를 프리미티브로 변환하기 위해 각각 '오토 박싱'및 '박싱'이라는 기술이 있습니다. Ase Java는 객체 지향 프로그래밍 언어이며, 우리는 항상 객체를 다루며, 컬렉션, 직렬화 , 등도 필요합니다.
따라서 Java에서 항상 객체와 기본 유형이 필요하므로 이러한 오토 박싱 및 언 박싱 기술이 필요합니다.
오토 박싱
Autoboxing은 기본 데이터 유형을 해당 래퍼 클래스의 객체로 자동 변환하는 기술입니다. 예를 들면 , int를 Integer 클래스로, char을 Character 클래스로 변환하는 등은 오토 박싱의 인스턴스입니다.
노트 : 래퍼 클래스는 valueOf () 메서드를 사용하여 기본 요소를 Java 5부터 감가 상각 된 객체로 변환합니다.
개봉
래퍼 클래스 객체를 해당 기본 데이터 유형으로 역변환하는 것을 '언 박싱'이라고합니다.
노트 : Java 5부터는 래퍼 객체를 기본 유형으로 변환하는 intValue () 메서드가 더 이상 사용되지 않습니다.
아래에 권투 / 개봉의 예가 나와 있습니다.
public class Main { public static void main(String args()){ //Convert int to Integer : boxing int num=20; Integer int_class= Integer.valueOf(num);//explicit conversion from int to Integer Integer inum=num;//autoboxing System.out.println('int => Integer: ' + num+' => '+inum); //Convert Integer to int: unboxing Integer val=new Integer (3); int ival=val.intValue();//explicit conversion from Integer to int int jval=val;//unboxing System.out.println('Integer => int:' + val+' => '+jval); } }
산출
위 프로그램은 int 값에 대한 autoboxing 및 unboxing을 보여줍니다. 먼저 int를 Integer 객체로 변환 한 다음 Integer 객체를 int 데이터 유형으로 변환합니다.
Java에있는 래퍼 클래스를 보여주는 프로그램을 구현해 보겠습니다.
public class Main { public static void main(String args()) { byte bbyte=10; short sshort=20; int iint=300; long llong=400; float ffloat=3.14F; double ddouble=77.2D; char cchar='A'; boolean bboolean=true; //Convert primitives into objects => Autoboxing Byte byteobj=bbyte; Short shortobj=sshort; Integer intobj=iint; Long longobj=llong; Float floatobj=ffloat; Double doubleobj=ddouble; Character charobj=cchar; Boolean boolobj=bboolean; //Print converted objects System.out.println('Primitives converted to Objects:'); System.out.println('Byte object: '+byteobj); System.out.println('Short object: '+shortobj); System.out.println('Integer object: '+intobj); System.out.println('Long object: '+longobj); System.out.println('Float object: '+floatobj); System.out.println('Double object: '+doubleobj); System.out.println('Character object: '+charobj); System.out.println('Boolean object: '+boolobj); //Convert Objects to Primitives => Unboxing byte bytevalue=byteobj; short shortvalue=shortobj; int intvalue=intobj; long longvalue=longobj; float floatvalue=floatobj; double doublevalue=doubleobj; char charvalue=charobj; boolean boolvalue=boolobj; //Print primitives System.out.println('Converting Objects to Primitives'); System.out.println('byte value: '+bytevalue); System.out.println('short value: '+shortvalue); System.out.println('int value: '+intvalue); System.out.println('long value: '+longvalue); System.out.println('float value: '+floatvalue); System.out.println('double value: '+doublevalue); System.out.println('char value: '+charvalue); System.out.println('boolean value: '+boolvalue); } }
산출
위의 프로그램 출력은 기본 형식에서 래퍼 개체로의 변환 (Autoboxing)을 보여주고 래퍼 개체에서 기본 형식으로의 변환 (unboxing)을 반대로합니다.
자주 묻는 질문
Q # 1) Java의 클래스 데이터 유형은 무엇입니까?
대답: Java는 실행중인 응용 프로그램의 모든 클래스, 개체 및 인터페이스에 대한 정보를 포함하는 'Class'라는 클래스를 제공합니다. Class 클래스는 또한 원시 데이터 유형과 void 유형을 나타냅니다.
Class 클래스는 java.lang 패키지의 일부입니다.
Q # 2) Java의 Normal Class는 무엇입니까?
대답: Java의 일반 클래스는 비 정적 클래스입니다. new 키워드를 사용하여 일반 클래스의 객체를 만들 수 있습니다. 또한 모든 일반 클래스는 다른 클래스를 구성원으로 가질 수 있습니다. 이 경우 멤버 클래스를 중첩 또는 내부 클래스라고하고 둘러싸는 클래스를 외부 클래스라고합니다.
Q # 3) 자바에서 문자열은 래퍼 클래스입니까?
대답: 아니요, String은 Java의 래퍼 클래스가 아닙니다. 클래스가 래퍼 클래스가 되려면 해당 기본 유형이 필요합니다. 예를 들면 Integer 래퍼 클래스의 경우 기본 유형 int가 있습니다. String 클래스의 경우 해당하는 기본 데이터 유형이 없습니다.
Q # 4) 래퍼 클래스의 장점은 무엇입니까?
대답: 래퍼 클래스는 기본 데이터 유형을 객체로 변환하는 데 사용됩니다. 즉, 래퍼 클래스는 기본 형식을 개체로 래핑합니다. 랩퍼 클래스는 Collections와 같은 특정 Java 기능이 원시 데이터 유형이 아닌 객체 만 기대할 때 사용됩니다.
Q # 5) Java에서 Singleton Class가 사용되는 이유는 무엇입니까?
대답: 특정 객체에 대한 전역 액세스 지점을 원할 때마다 인스턴스가 하나만있는 단일 클래스를 디자인 할 수있는 단일 패턴을 사용합니다. 싱글 톤 클래스는 캐시, 스레드 풀링, 데이터베이스 애플리케이션, 로깅 등에 사용됩니다.
결론
이 튜토리얼에서는 Java에서 사용되는 다양한 클래스 유형을 다루었습니다. 구체적, 추상, 최종, 정적, 중첩, POJO 등의 클래스 유형을 보았습니다. 이 외에도 Singleton 클래스, Immutable 클래스에 대해 논의하고 구현 예제도 논의했습니다.
우리는 또한 자바에서 래퍼 클래스와 객체 클래스를 다루었습니다. 래퍼 클래스는 Java의 기본 데이터 유형을 객체로 래핑하는 클래스입니다. Java의 객체 클래스는 다른 모든 클래스의 수퍼 클래스입니다. Java 계층 구조에서 최상위 클래스입니다.
이제 Java의 클래스와 객체와 클래스 유형에 대해 논의 했으므로 다음 자습서에서는 Java의 생성자에 대해 자세히 설명합니다.
=> 여기에서 완벽한 Java 교육 가이드를 확인하십시오.
C ++ 함수에 대한 정의되지 않은 참조