Software Engineering/Java, JSP

[Java] 제3장 클래스와 상속

iseop 2023. 4. 29. 17:56   인쇄용 버전

1. 단원 요약

  • 클래스를 정의할 때는 [접근제어자] [final/abstract] class 식별자 [extends 부모클래스] [implements 인터페이스] {} 와 같이 한다.
    • 중괄호 내에는 필드와 메소드를 선언한다.
    • 인터페이스를 구현하는 클래스인 경우 인터페이스에 정의된 메소드를 구현해야 한다.
    • 클래스의 접근제어자를 생략하는 경우 동일 패키지 내에 있는 다른 클래스에서 참조가 가능하다.
    • 클래스가 다른 클래스 내에서 정의된 경우 이를 내부 클래스 또는 네스티드 클래스라 하고, 그렇지 않은 클래스를 외부 클래스 또는 톱레벨 클래스라 한다.
    • 톱레벨 클래스는 public 또는 생략된 접근제어자만 가질 수 있다. 
  • final 메소드는 오버라이딩이 불가하다.
  • final 클래스는 부모클래스가 될 수 없다.
  • 부모 클래스를 확장하는 자식 클래스를 정의할 때 extends 키워드를 사용한다.
  • public은 모든 곳에서 참조 가능하다.
  • protected는 클래스 내부, 동일 패키지 내부, 자식클래스에서 참조 가능하다.
  • 접근제어자가 생략된 경우 클래스 내부, 동일 패키지 내부에서 참조 가능하다.  
  • private는 클래스 내부에서만 참조 가능하다.
  • final 필드는 선언과 동시에 초기화하여야 한다.
  • static 필드는 인스턴스화 하지 않은 클래스의 식별자를 통해서 참조가 가능한 공유 필드이다.
  • static이 아닌 필드는 인스턴스 필드라고 부르며, 각 객체가 배타적으로 소유한다.
  • 메소드를 오버라이딩할 때는 부모클래스의 메소드와 식별자, 반환형이 일치해야 한다.
    • 오버라이드 된 메소드의 접근제어자를 더 넓은 접근제어자로 변경할 수 있다.
  • this를 사용하여 객체의 필드를 참조할 수 있다.
    • 인스턴스 필드 또는 인스턴스 메소드를 참할 때는 this를 생략할 수 있다.
    • super를 사용하여 부모클래스의 필드를 참조할 수 있다.
    • this()와 super()는 생성자의 맨 앞 부분에 사용한다.
    • this()는 동일한 클래스의 또다른 생성자를 호출하는 데 사용된다.
    • super()는 부모클래스의 생성자를 호출하는 데 사용된다.

 

2. 연습문제 요약

  • Java에는 전역 변수가 없다.
  • public > protected > 생략 > private