10장 : 자바에는 상속이란 것이 있어요

주리·2022년 11월 7일
0

자바

목록 보기
1/3

상속 특징

  1. 자식 클래스의 생성자 호출 → 자동으로 부모 클래스의 생성자도 호출된다
    → 그 다음에 자식 클래스의 생성자 속 내용이 수행
  2. 다중상속이 안됨 (하나만 상속받는 것이 가능)

예약어 super

super() = 부모클래스의 생성자를 호출한다 !
super.부모클래스의 메소드() = 부모클래스의 메소드를 호출한다

Overriding 오버라이딩

Overriding = 자식클래스에서 부모 클래스에 있는 메소드와 동일하게 선언하는 것
-> 자식클래스에 정의되어있는 메소드를 호출

  • 특징
  1. 접근제어자 , 리턴 타입 , 메소드 이름 , 매개변수 타입 등이 모두 동일해야 함
  2. 리턴타입을 변경하면 오류가 난다
  3. 접근제어자가 확대되는 것은 문제 X / 축소 되는 것은 문제 O
    ( public > protected > package-private > private )

Overloading 오버로딩

Overloading = 같은 메소드라도 매개변수가 다르면 사용할 수 있는 것
( 상속 관계가 아니어도 된다 )

참조자료형의 형 변환

  • 부모클래스 obj = new 자식클래스();
    -> 자식클래스 타입 > 부모클래스타입 형변환 가능

  • 자식클래스 obj = new 부모클래스();
    -> 부모클래스 타입 > 자식클래스타입 형변환 불가능

  • 이유 : 부모클래스에서 호출할 수 있는 메소드들은 자식클래스에서 호출 가능 (반대는 불가능)

  1. 불가능
    마지막줄처럼 명시적으로 적어주면 오류가 난다
ParentCasting parent = new ParentCasting();
ChildCasting child = new ChildCasting();

ChildCasting child2 = (ChildCasting)parent;
  1. 가능
    child화 된 parent2 (child형) 를 child2에 넣어주면 가능하다
ParentChasting parent2 = child;
ChildCasting child2 = (ChildCasting)parent2;

instanceof : 메소드 타입 구분

객체 instance of 타입
-> true / false 로 결과값이 나온다

if (객체 instance of 타입1)
{
	System.out.println("타입1");
} else if (객체 instance of 타입2)
{
	System.out.println("타입2");
}
  • 특징
  1. if문으로 많이 이용
  2. 가장 하위에 있는 자식 타입 부터 확인해야 함
    -> 타입1(자식) , 타입2(부모)
    -> 자식타입은 부모타입을 포함하고 있어서 !
profile
완벽한 글 보다, 그 과정들을 기록하는 개발자

0개의 댓글