자바 클래스

주빈·2022년 2월 10일
0

java

목록 보기
1/6
post-thumbnail

오늘은 본격적인 알고리즘 공부 들어가기전 자바 클래스에 대해 다시 한번 복습하는 시간을 가져봤다.

📘 자바에서 클래스란?

임의의 데이터형을 자유로이 조합하여 만들 수 있는 자료구조이다.

✏ 간단한 구조의 클래스 선언법

class ABC {
        int A;		// A는 int형 필드
        double B;	// B는 double형 필드
        String C;	// C는 String형 필드
    }

위에서 ABC는 클래스 이름이다. 클래스 ABC는 3개의 데이터 요소를 갖고 있다. 이 데이터 요소를 필드(field)라고 한다. 클래스형 변수를 사용할 때는 먼저 클래스형 변수(실체를 참조하는 변수)를 만들고, 실체인 클래스 인스턴스를 생성해야 한다.

ABC a;			// ABC형의 클래스형 변수 a 선언
a = new ABC();	// ABC형의 클래스 인스턴스(실체)를 생성

ABC a = new ABC();	//위의 두 줄을 한 번에도 가능

✏ 클래스 선언 보충

  1. 클래스 본체에서는 다음과 같은 내용을 선언할 수 있다.
  • 멤버 (필드 / 메서드 / 중첩(nested) 클래스 / 중첩(nested) 인터페이스)
  • 클래스 초기화 / 인스턴스 초기화
  • 생성자
  1. 필드 / 메서드 / 생성자를 선언할 때 public / protected / private를 지정할 수 있다.

  2. 메서드 / 생성자는 다중으로 정의(오버로드)할 수 있다.
    => 오버로드란 메서드나 생성자를 정의할 때 형식은 다흐지만 같은 이름을 붙이는 것을 의미한다.

  3. final로 선언한 필드는 한 번만 값을 대입할 수 있다.

  4. 생성자는 새로 생성한 인스턴스의 초기화를 위해 사용이 된다.

✏ 클래스의 간단한 예

간단한 예로 클래스를 알아보자

class A {
        private int a1;             // 비공개 필드
        protected int a2;           // 한정 공개 필드
        public int a3;              // 공개 필드

        static final int f1 = 0;    // 정적 상수 필드

        public A() {                // 생성자
            a1 = a2 = a3 = 0;
        }

        public A(int a1, int a2, int a3) {    // 생성자
            this.a1 = a1;
            this.a2 = a2;
            this.a3 = a3;
        }

        public void setA1(int a) {    // 메서드 A1의 setter
            a1 = a;
        }

        public int getA1() {          // 메서드 A1의 getter
            return a1;
        }
    }

공개 클래스

  • 클래스 접근 제한자 public을 붙여 선언한 클래스로, 다른 패키지에서 사용할 수 있는 공개 클래스(public class)이다.

final 클래스

  • 클래스 접근 제한자 final을 붙여 선언한 클래스로, 서브 클래스를 가질 수 없다(새로운 클래스를 상속할 수 없다). 이는 파이널 클래스(final class)라 한다.

파생 클래스

  • 클래스 A를 직접 상위 클래스(direct superclass)로 하려면 선언할 때 extends A를 추가해야 한다. 이때 선언한 클래스는 클래스 A의 직접 서브 클래스(direct subclass)가 된다.
    클래스 선언에 extends가 없는 클래스의 상위 클래스는 Object 클래스가 된다.

ex)

class B extends A {
	// ...
}

인터페이스 구현

  • 인터페이스 X를 구현하려면 선언에 implements X를 추가해야 한다.

ex)

class Y implements X {
	// ...
}

추상 클래스

  • 클래스 접근 제한자 abstract를 붙여 클래스를 선언하면 추상 메서드를 가질 수 있는 추상 클래스(abstract class)가 된다. 추상 클래스형은 불완전한 클래스이므로 인스턴스를 만들 수 없다.
    = > 추상 메서드란 실체가 정의되지 않은 메서드로 실체는 서브 클래스에서 정의한다.

중첩 클래스

클래스 또는 인터페이스 안에 선언한 클래스는 중첩 클래스(nested class)가 된다.

  • 멤버 클래스(member class)는 그 선언이 다른 클래스 또는 인터페이스 선언에 둘러싸인 클래스다.
  • 내부 클래스(inner class)는 명시적으로도 암묵적으로도 정적(static)으로 선언되지 않는 중첩 클래스이다. 정적 초기화나 멤버 인터페이스 선언을 할 수 없고, 컴파일을 할 때 상수 필드가 아닌 한 정적 멤버를 선언할 수 없다.
  • 지역 클래스(local class)는 이름이 주어진 중첩 클래스인 내부 클래스이다. 어떤 클래스의 멤버도 될 수 없다.
profile
누구에게나 필요한 개발자가 꿈

0개의 댓글