본문 바로가기

Languages/Java

[Java] 상속

상속

  • 자식 클래스는 클래스 선언시 extends 다음에 부모 클래스 이름을 적어줌
  • 자식 클래스의 생성자가 호출되면 자동으로 부모 클래스의 매개 변수 없는 생성자가 실행됨. 
  • 자바는 다중 상속이 안됨. extends 뒤에 클래스를 하나만 써야함.
  • 부모 클래스에 기본생성자를 만들어놓지않고 매개변수를 받는 생성자만 만들어놓으면, 자식 클래스의 생성자가 실행될 때 에러 발생. 자식 클래스의 생성자가 실행될 때 부모 클래스의 기본 생성자를 찾기 때문 

        ->super()사용. super(null);

 

super()

  • 메소드처럼 super()로 사용시 부모 클래스의 생성자를 호출한다는 것을 의미.
  • super.printName()으로 사용시 부모 클래스에 있는 printName()이라는 메소드 호출을 의미
  • 생성자에서는 super()를 명시적으로 지정하지 않으면, 자동으로 super()가 추가됨
  • 만약 부모 클래스에 매개 변수가 없는 생성자 없이 매개 변수있는 생성만 정의되어있으면 super()에서 매개변수있는 생성자 호출해야함

 

메소드 Overriding

  • 접근 제어자, 리턴 타입, 메소드 이름, 매개 변수 타입 및 개수가 모두 동일해야함
  • 부모 클래스에 선언되어 있는 메소드와 동일하게 선언된 메소드를 자식 클래스에 선언하면, 자식 클래스의 메소드만 실행됨
  • 동일하게 선언됨=동일한 시그네쳐를 가짐. (시그네쳐:메소드 이름,매개변수의 타입 및 개수)
  • Overriding된 메소드는 부모 클래스와 동일한 리턴 타입을 가져야함
  • Overriding된 메소드의 접근 제어자는 부모 클래스에 있는 메소드와 달라도 되지만, 접근 권한이 확장되는 경우에만 허용.

 

'Languages > Java' 카테고리의 다른 글

[Java] 인터페이스, 추상클래스, enum  (2) 2023.08.29
[Java] 형변환, 다형성  (0) 2023.08.22
[Java] 패키지, 접근제어자  (0) 2023.08.19
[Java] 매개 변수 지정  (0) 2023.08.19
[Java] Static과 Static 블록  (0) 2023.08.11