[day10] java-basic : 상속
상속을 쓰는 목적
- 확장성이다.
- 변화에 둔감하게 만들기 위함이다.
- 두 클래스에 중복되는 멤버변수와 메소드가 있다면 걔네들을 공통의 애들을 잘라서 위로 올리는 것도 상속이다.
클래스의 관계
- 부모 = 상위 = Super
-
자식 = 하위 = Sub
- 하위 클래스는 상위 클래스에 선언되어 있는 멤버변수와 메소드를 자기 것처럼 쓸 수 있다.
- 단, 접근제한자에 따라 부모클래스의 사용 가능 여부가 달라진다.
-
부모클래스는 자식클래스에 뭐가 있는지 잘 알 수 없다.
super.변수
,super.메소드
,super(매개변수)
: 부모(상위)클래스의 객체, 생성자에 접근할 때 사용하는 키워드는super
이다.this()
생성자도super()
생성자도 제일 첫 줄에 나와야 하기 때문에 같이 쓰지 못한다.- 다만, 상속을 받게 되면 자동으로
super()
생성자를 가지고 있다다. 보통 숨김으로 존재하기 때문에 자식클래스의 생성자를 사용할 수 있게 되는 것이다. -
즉, 상속을 받게 되면 부모의 공간이 먼저 만들어지고(부모생성자 호출) 자식의 공간이 만들어지는 것(자식 생성자 호출)이다.
- UML 다이어그램에서 상속관계는 화살표로 표시한다.
오버라이딩
- 메소드 오버라이딩은 상속관계에 있을 때 부모클래스 메소드의 내용부를 다르게 해서 사용하는 것이다.
- 부모 클래스의 메소드를 재정의 할때는
@Override
어노테이션을 붙인다. - 메소드 선언부분에서 접근 제한자 부분은 다를 수 있다.
- 단, 하위 클래스의 접근 제한자가 상위클래스의 접근 제한자보다 좁으면 안된다.
JAVA TIP
- 숫자를 3자리씩 끊어서 코드를 짜고 싶을 때
_
를 사용할 수 있다. -
예 :
1_344_000
(코드) =>1344000
(출력) -
클래스 명 변경할 때 단축키 :
F2
- [source - Generate Constructor from Superclass] : 상속받은 생성자 만들기
- [source - Generate Constructor using field] : 매개변수 있는 생성자 자동으로 만들기