클래스는 객체 지향 패러다임 프로그래밍의 기본 단위입니다. 

Java에서 클래스는 객체를 만들기위한 템플릿으로 사용됩니다. 

Java의 클래스는 5 개의 구성 요소로 구성 될 수 있습니다.

  1. 필드
  2. 메서드
  3. 생성자
  4. 정적 이니셜 라이저
  5. 인스턴스 이니셜 라이저

필드와 메소드는 클래스의 멤버라고도합니다. 나머지 구성 요소는 클래스 초기화, 즉 클래스 템플릿을 사용하여 객체를 만드는 데 사용됩니다. 생성자는 클래스의 객체를 만드는 데 사용됩니다. 클래스에 대해 적어도 하나의 생성자가 있어야합니다 (명시적으로 선언한 다음 JVM이 기본 생성자를 삽입하는 경우). 초기화 프로그램은 클래스의 필드를 초기화하는 데 사용됩니다. 정적 또는 인스턴스 유형의 초기화를 0개 이상 가질 수 있습니다.

클래스 선언 방법

Java에서 클래스를 선언하는 일반적인 구문은 다음과 같습니다.

<<modifiers>> class <<class name>> {

        // Body of the class goes here

} 


클래스 선언은 0 개 이상의 수정자를 가질 수 있습니다. 키워드 class는 클래스를 선언하는 데 사용됩니다. << 클래스 이름 >>은 클래스의 사용자 정의 이름이며 유효한 식별자 여야합니다. 각 클래스에는 본문이 있으며, 본문은 중괄호 ({}) 안에 지정됩니다. 클래스의 본문에는 필드, 메서드 등 다양한 구성 요소가 포함됩니다.

클래스 선언의 예는 다음과 같습니다.

// Main.java filename

class Main {

    // Empty body for now; Write you own

} 


클래스에서 필드를 선언하는 방법

클래스의 필드는 해당 클래스의 객체에 대한 속성 (속성이라고도 함)을 나타냅니다. 필드는 클래스 본문 내에서 선언됩니다. 클래스에서 필드를 선언하는 일반적인 구문은 다음과 같습니다.

<<modifiers>> class <<class name>> {

        // A field declaration

        <<modifiers>> <<data type>> <<field name>> = <<initial value>>;

} 

사람 객체의 모든 대상이 이름과 성별이라는 두 가지 특성을 가지고 있다고 가정합니다. 따라서 선언된 필드는 다음과 같습니다.

// Human.java

class Human {

        String name;

        String gender;

} 

여기서 Human 클래스는 이름과 성별이라는 두 필드를 선언합니다. 두 필드 모두 String 유형입니다. Human 클래스의 모든 인스턴스 (또는 객체)에는이 두 필드의 복사본이 있습니다.


클래스의 인스턴스 생성하기

다음은 클래스 인스턴스를 생성하는 일반적인 구문입니다.

<<Class>> <<variable>> = new <<Call to Class Constructor>>;

 

//e.g.

Human h = new Human(); 

클래스에 생성자를 추가하지 않으면 Java 컴파일러가 생성자를 추가합니다. Java 컴파일러에 의해 추가된 생성자를 기본 생성자라고합니다. 기본 생성자는 인수를 허용하지 않습니다. 클래스의 생성자 이름은 클래스 이름과 동일합니다. new 연산자 뒤에는 인스턴스가 생성되는 클래스의 생성자에 대한 호출이 이어집니다. new 연산자는 힙에 메모리를 할당하여 클래스의 인스턴스를 만듭니다.

null 참조 유형

Java에는 null 유형이라고하는 특별한 참조 유형이 있습니다. 이름이 없습니다. 따라서 null 참조 유형의 변수를 정의 할 수 없습니다. null 참조 유형에는 Java가 정의한 하나의 값 (null 리터럴) 만 있습니다. 단순히 null입니다. null 참조 유형은 다른 참조 유형과 할당 호환됩니다. 즉, 참조 유형의 변수에 널값을 지정할 수 있습니다. 실제로 참조 유형 변수에 저장된 Null 값은 참조 변수가 객체를 참조하지 않음을 의미합니다.

// Assign null value to john

Human john = null;  // john is not referring to any object

john = new Human(); // Now, john is referring to a valid Human object 

null는 null 형의 문자형입니다. 원시 형 변수에 null을 할당 할 수 없기 때문에 Java 컴파일러는 기본 값을 null 값과 비교할 수 없습니다.

생성자

생성자는 객체가 생성 된 직후 클래스의 객체를 초기화하는 데 사용되는 명명된 코드 블록입니다. 생성자 선언의 일반적인 구문은 다음과 같습니다.

<<Modifiers>> <<Constructor Name>>(<<parameters list>>) throws <<Exceptions list>> {

        // Body of constructor goes here

} 

생성자는 public, private, protected 또는 package-level (수정 자 없음)으로 액세스 한정자를 가질 수 있습니다. 생성자 이름은 클래스의 단순한 이름과 동일합니다. 생성자 이름 뒤에는 매개 변수를 포함 할 수있는 여는 괄호와 닫는 괄호 쌍이옵니다. 선택적으로 닫는 괄호 다음에 키워드 throws가 올 수 있으며 그 뒤에 쉼표로 구분된 예외 목록이옵니다.

메서드와 달리 생성자에는 반환 형식이 없습니다. 생성자의 반환 유형으로 void를 지정할 수도 없습니다. 반환 유형이 있으면 메소드입니다. 구문의 이름이 클래스의 단순한 이름과 같은 경우 메서드 또는 생성자가 될 수 있습니다. 반환 유형을 지정하면 메서드입니다. 반환 유형을 지정하지 않으면 생성자입니다.


인스턴스 초기화 블록

생성자는 클래스의 인스턴스를 초기화하는 데 사용되는 것을 보았습니다. 인스턴스 이니셜 라이저라고도하는 인스턴스 초기화 블록은 클래스의 객체를 초기화하는데도 사용됩니다. 인스턴스 이니셜 라이저는 클래스 본문 내부의 코드 블록이지만 메서드 또는 생성자 외부에있는 코드 블록입니다. 인스턴스 이니셜 라이저에는 이름이 없습니다. 이 코드는 여는 중괄호와 닫는 중괄호 안에 배치됩니다.

인스턴스 이니셜 라이저는 인스턴스 컨텍스트에서 실행되며 키워드 this는 인스턴스 이니셜 라이저에서 사용할 수 있습니다.

// An instance initializer

{

        /* Other code for the instance initializer goes here */

} 

한 클래스에 대해 인스턴스 초기화 프로그램을 여러 개 가질 수 있습니다. 이 모든 것은 작성한 모든 오브젝트에 대해 텍스트 순서대로 자동 실행됩니다. 모든 인스턴스 이니셜 라이저에 대한 코드는 생성자보다 먼저 실행됩니다.

인스턴스 이니셜 라이저에는 return 문을 사용할 수 없습니다. 선언된 모든 생성자가 throws 절에서 검사 된 예외를 나열하지 않는 한 검사된 예외를 throw 할 수 없습니다.


정적 초기화 블록

정적 초기화 블록은 정적 초기화 프로그램이라고도합니다. 이는 인스턴스 초기화 블록과 유사합니다. 클래스를 초기화하는 데 사용됩니다. 인스턴스 이니셜 라이저는 객체 당 한 번만 실행되는 반면 정적 초기화는 클래스 정의가 JVM으로로드 될 때 클래스에 대해 한 번만 실행됩니다. 인스턴스 이니셜 라이저와 구별하려면 선언 초기에 static 키워드를 사용해야합니다.

한 클래스에 여러 정적 초기화 프로그램을 가질 수 있습니다. 모든 정적 이니셜 라이저는 표시되는 텍스트 순서로 실행되며 인스턴스 이니셜 라이저보다 먼저 실행됩니다.

// An static initializer

static {

        /* Other code for the static initializer goes here */

}

정적 초기화 프로그램은 검사 된 예외를 throw 할 수 없으며 return 문도 사용할 수 없습니다.

'Java' 카테고리의 다른 글

자바 - Continue문 사용하기  (0) 2018.07.23
자바 - 정적 변수(Static Variable), 정적 메서드(Static Method)  (0) 2018.07.23
자바 - 연산자  (0) 2018.07.23
자바 - 데이터 타입  (0) 2018.07.23
자바 - 변수  (0) 2018.07.23
블로그 이미지

귀염둥이채원

,