상속이란?

  • 상위 클래스는 하위 클래스 보다 일반적인 의미를 가짐
    하위 클래스는 상위 클래스 보다 구체적인 의미를 가짐

protected 접근 제한자

  • public : public 접근 제한은 모든 패키지에서 아무런 제한 없이 생성자를 호출할 수 있도록 합니다.

  • protected : protected 접근 제한은 default 접근 제한과 마찬가지로 같은 패키지에 속하는 클래스에서 생성자를 호출할 수 있도록 합니다. 차이점으로 다른 패키지에 속한 클래스가 해당 클래스의 자식(child) 클래스라면 생성자를 호출할 수 있습니다.

  • default : 접근 제한자를 사용하지 않으면 같은 패키지에서는 아무런 제한 없이 생성자를 호출할 수 있으나, 다른 패키지에서는 생성자를 호출할 수 없도록 합니다.

  • private : private 접근 제한은 동일한 패키지이건 다른 패키지이건 상관없이 생성자를 호출하지 못하도록 제한합니다. 오로지 클래스 내부에서만 생성자를 호출할 수 있고 객체를 만들 수 있습니다.

super()

  • this가 자기 자신의 인스턴스의 주소를 자기는 것처럼
    super는 하위 클래스가 상위 클래스에 대한 주소를 가지게 됨
    하위 클래스가 상위 클래스에 접근 할 때 사용할 수 있음
  • 하위 constructor(생성자)에서 default로 상위 default constructor 호출
  • super(a,b) constructor(a,b) 호출
  • 하위 클래스가 생성 될때는 상위 클래스가 먼저 생성 된다.

상위 클래스로의 묵시적 형 변환(업캐스팅)

  • 상위 클래스 형으로 변수를 선언하고 하위 클래스 인스턴스를 생성 할 수 있음
  • 하위 클래스는 상위 클래스의 타입을 내포하고 있으므로 상위 클래스로 묵시적 형변환이 가능함
Customer vc = new VIPCustomer();
//상위				하위
//VIPCustomer() 생성자의 호출로 인스턴스는 모두 생성 되었지만
//타입이 Customer 이므로 접근 할 수 있는 변수나 메서드는 Customer의 변수와 메서드 임

Overriding 다형성

  • 상위 클래스에 정의 된 메서드 중 하위 클래스와 기능이 맞지 않거나 추가 기능이 필요한 경우 같은 이름과 매개변수로 하위 클래스에서 재정의 함
    (메소드 이름, 매개 변수, 리턴 값이 모두 같아야한다.)

  • overload : 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메소드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메소드를 정의할 수 있다.
    (리턴 값만 다른 것은 오버로딩 할 수 없다.)

  • 묵시적 형 변환이 되면 재정의 된 메서드 호출

다형성(polymorphism)

  • 하나의 코드가 여러가지 자료형으로 구현되어 실행되는 것

extends, implements 차이

  1. extends
    부모에서 선언 / 정의를 모두하며 자식은 메소드 / 변수를 그대로 사용할 수 있음

  2. implements (interface 구현)
    부모 객체는 선언만 하며 정의(내용)은 자식에서 오버라이딩 (재정의) 해서 사용해야함

  3. abstract
    extends와 interface 혼합. extends하되 몇 개는 추상 메소드로 구현되어 있음

List와 ArrayList 차이?

  1. List
    인터페이스

  2. ArrayList
    클래스

profile
개발 블로그

0개의 댓글