생성자 및 클래스의 관계

박상우·2022년 10월 15일
post-thumbnail

클래스

  • 명명법 : 파스칼 케이스
  • 클래스(Class)는 서로 관련있는 멤버(Member)를 묶어 내기 위해 존재하는 참조 타입(Reference)인 객체 단위이다.
  • 자바 파일(.java)은 반드시 접근 제한자가 public인 파일 이름과 같은 이름을 가지는 구성 요소를 요구한다.
  • 멤버(Member) : 어떠한 클래스가 가질 수 있는 구성 요소 전체를 아울러 의미한다. 가령, 멤버 변수나 메서드 등이 멤버에 해당한다.
  • abstract : 해당 클래스가 추상적이게 된다. 추상 클래스는 최종적일 수 없다.

  • final : 해당 클래스가 최종적이게 된다. 더이상 해당 클래스를 상속 받을 수 없다는 뜻이며, 최종 클래스는 추상적일 수 없다.

  • extends : 상속 받을 클래스를 지정한다. 생략시 Object클래스를 상속 받는다.

  • implements : 구현할 인터페이스를 한 개 이상 지정한다. 생략시 구현하는 인터페이스가 없다.


생성자

  • 생성자는 어떤 참조 타입이 객체화 되기 위해 반드시 한 번 실행되어야 하는 일종의 메서드이다. 단, 일반 메서드와 달리 반환 타입이나 별도의 이름이 없다.
  • 생성자 호출이 완료되기 전 까지는 해당 객체가 완전히 객체화 되었다고 할 수는 없다.
  • 생성자 내의 첫 구문은 반드시 '자기 생성자 호출'(this) 혹은 '부모 생성자 호출'(super) 둘중 하나여야 하며, 이가 아니거나, 둘 다 일수는 없다.
  • 클래스 내에 생성자를 별도로 만들지 않는다면 항상 기본 생성자가 있는 것이다.

    객체란 참조 타입인 값을 의미한다. 기초 타입의 값을 객체라고 하지 않는다.
    객체화 : 어떠한 참조 타입을 객체로 만들기 위해 new키워드를 이용하며 new [참조타입이름]([생성자 전달인자,...]?) 형식으로 객체화한다.
    즉, 원시타입(기본타입)은 객체화 할 수 없다.

상속

  • 상속은 클래스간에 1:1로 이루어지며, extends 키워드를 이용하여 어떠한 클래스를 상속 받을지 설정할 수 있다.
  • 상속은 주로, 부모(Parent)가 되는 클래스의 기능(멤버)을 추가하고자 할 때 사용한다.
  • 상속은 상하 관계로 평가된다.
  • 상속을 명시하지 않으면 Object클래스를 상속 받는다.
  • 모든 참조 타입은 결과적으로 Object 클래스를 상속 받는다는 것으로 귀결된다.
  • 다중 상속 및 순환 상속은 불가하다.
  • 추상클래스를 상속하는 클래스는 추상클래스에서 사용하는 추상메서드를 반드시 지정해 주어야 한다.

실제 사용시의 예시

  • protected 제한자의 사용 예시

    위에서 보다시피 protected는 같은 패키지이거나 상속관계에 있을때만 접근 할 수있게 된다.

위에 package와 Creature 클래스의 패키지는 다르기 때문에 protected 속성으로 인해 Instance클래스에서 객체화로 접근을 할 수 없게 된다.

  • 한가지 중요한 정보

    한 패키지 안에 클래스를 또 생성하고 싶을 경우 public을 사용해서는 클래스를 생성할 수 없다. 그 이유는 public으로 생성된 클래스는 그 파일명과 이름이 같아야 하는데 두개의 public이 붙은 클래스로 생성할 경우 파일명과 클래스의 이름에서 관계가 모호해짐으로 제한자를 붙이지 않은 그냥 Class의 '무엇'으로 클래스를 생성해야 한다.

profile
백엔드 개발자가 되기 위한 여정

0개의 댓글