클래스 Class

han.user();·2023년 2월 26일
0
post-thumbnail

클래스는 서로 다른 여러 데이터형을 자유로이 조합하여 만들 수 있는 자료구조

여러 필요한 기능들을 조합해서 '하나'로 묶고 이름을 붙인 것이 '클래스'

클래스를 사용해서 코딩하는 것을 '객체지향형 프로그래밍'이라고 한다.
(객체 = 하나의 묶음)


클래스형 변수를 사용할 때는 먼저 클래스형 변수를 만들고,
그와 동시에 실체인 클래스 인스턴스를 생성해야 한다.

위와 같이 도장이라는 하나의 클래스 통해 도장 자국이라는 여러 인스턴스를 찍을 수 있다.
매일매일 도장 자국의 날짜가 바뀌듯이 인스턴스를 만들 때 값을 변경해서 가질 수 있다.

(Do it! 알고리즘 입문 자바편)


class XYZ {
int x;
long y;
double z;
}
XYZ a = new XYZ();  // 클래스 변수 선언 및 인스턴스화

자바에서 배열 본체와 클래스 인스턴스는 프로그램을 실행할 때
new식으로 생성한다는 공통점이 있다.
이 2가지를 통틀어 객체(object)라고 부른다.


클래스에 대한 내용을 최대한 요약하면,

  1. 클래스 본체와 멤버
  • 멤버(필드,메소드,중첩(nested)클래스,중첩 인터페이스)
  • 클래스 초기화, 인스턴스 초기화
  • 생성자

그리고 클래스는 다음과 같은 문법 규칙과 특징을 가지고 있다.

  • 필드, 메소드, 생성자를 선언할 때 public, protected, private을 지정할 수 있다.
  • 메소드, 생성자는 다중으로 정의(오버로드)할 수 있다.
  • final로 선언한 필드는 값을 한 번만 대입할 수 있다.
  • 생성자는 새로 생성하는 인스턴스를 초기화하기 위해 사용한다.

  1. 공개 클래스
  • 클래스 접근제한자인 public을 붙여 클래스를 선언하면 다른 패키지에서 사용할 수 있는 공개 클래스가 된다.(public class)

  1. 파이널 클래스
  • 클래스 접근 제한자인 final을 붙여 클래스를 선언하면 하위 클래스를 가질 수 없는(다른 클래스가 상속할 수 없는) 파이널 클래스(final class)가 된다.

  1. 파생 클래스
  • A라는 클래스가 직접 상위 클래스가 되려면 선언할 때 extends A를 추가해야한다.
    이때 선언한 클래스가 A의 직접 하위 클래스가 되는 것이다.
    extends가 없는 클래스의 경우 자동적으로 최상위 클래스인 Object 클래스의 하위 클래스가 된다.

  1. 인터페이스 구현
  • 인터페이스 X를 구현하기 위해서는 선언에 implements X를 추가해야 한다.
class Y implements X {
(--생략--)
}

  1. 추상클래스
  • 클래스 수식자인 abstract를 붙여 클래스를 선언하면 추상 메소드를 가질 수 있는 추상 클래스가 됩니다. 추상 클래스는 불완전한 클래스이므로 인스턴스를 만들 수 없습니다.

  1. 중첩 클래스
    클래스 또는 인터페이스 안에 선언한 클래스는 중첩 클래스가 됩니다.
  • 멤버클래스는 그 선언이 다른 클래스 또는 인터페이스 선언에 의해 직접 둘러싸인 클래스입니다.
  • 내부 클래스는 명시적으로도 암묵적으로도 정적(static)이라고 선언하지 않은 중첩 클래스입니다. 정적 초기화나 멤버 인터페이스 선언을 할 수 없습니다. 그리고 컴파일을 할 때 상수 필드가 아니면 정적 멤버를 선언할 수 없습니다.
  • 지역 클래스는 이름이 주어진 중첩 클래스인 내부 클래스입니다. 어떤 클래스의 멤버도 될 수 없습니다.

profile
I'm still hungry.

0개의 댓글