나의 수업일지

인천 일보 아카데미 19일차_상속-좀 더 알아보기 / 인터페이스란 ?

2023. 3. 20. 20:16
  • Jave _ 상속(Inheritance)이란 ?

Java에서 상속이란 부모 클래스(물려주는 클래스) / 자식클래스(물려받는 클래스)로 나누어지고

상속받는 클래스에서 부모 클래스의 필드 / 메소드를 사용할 수 있게 하는것입니다 (단 private은 상속 불가)

 

  • Jave _ 상속(Inheritance) 문법은 ?

extends라는 키워드가 사용이 된다

 

  • 메소드 재정의(method overriding)

재정의 = 다시 정의한다

부모가 가진 메소드를 자식이 물려받고 자식에게 맞게 수정하는것을 말합니다

단 , 리탄타입 / 메소드 이름 / 매개변수는 수정이 불가능합니다

실행문만 수정이 가능합니다 (재정의하는경우 @Override이라는 문구가 붙는다)

 

  • @란 ?

소스코드를 컴파일해서 실행하기 전에 먼저 체크해서 실행하게 된다

문법 체크 같은게 먼저 실행이된다 (재정의할때 꼭 쓸필요는 없다)

 

  • 하지만 @를 쓰는 이유는 ?

붙어있으면 좋은점은 실수로 오버라이딩할 리탄타입 / 메소드 이름 / 매개변수 을 변경했다면

@Override를 붙여주면 Jave에서 정의 부분에 오류가 있음을 알려준다

 

  • 상속_좀 더 알아보기

상속해주는 클래스 ParentClass와 상속 받는 클래스 ChildClass를 만들었습니다

이제 Main으로 넘어와 상속받은 클래스를 사용해보면 ChildClass에서 만들지 않은

필드 name이 사용가능하다는걸알 수 있습니다

이렇게 생성하지 않은 필드나 메소드를 부모클래스에게 받아와 사용가능하게 하는것을 상속이라고 합니다

부모의 생성자까지 상속받아 사용

또한 위의 부모클래스 기본 생성자에 실행문을 넣었는데요

이또한 상속받은 클래스인 ChildClass에서 출력되는 것을 확인할 수 있습니다

이렇게 상속받는 클래스는 상속해주는 클래스의 기본 생성자까지도 상속받아 사용된다는 사실을알 수 있습니다

 

  • 상속자 클래스와 상속받는 클래스 둘다 기본 생성자에 실행문이 있다면?

상속 받는 경우 기본생성자 실행 순서

두가지 클래스 모두에 실행문이 있다면 부모 클래스의 기본생성자가 먼저 실행되고 이후 자식클래스의 생성자가

실행되는 모습을 확인할 수 있습니다

지금 당장은 크게 신경쓸 필요없지만 아마도 언젠가는 필요한 순간이 올지도 ?

 

  • 상속받아 메소드를 사용하기

부모 Class의 hello 메소드를 상속받아 사용한 모습

  • 상속받은 메소드를 재정의하기

@Override를 붙여주지 않으면 Jave에서 문법이 틀려도 따로 알려주지 않는다

하지만 @Override를 붙여주면 Jave에 이메소드는 Override메소드라고 선언한다는 말이기 때문에

메소드의 문법이 틀린경우 알려준다

 

  • @Override를 붙여주는 이유

@Override를 선언하고 메소드의 정의 부분이 틀린 경우
@Override를 지우고 메소드 정의 부분이 틀린 경우

@Override를 붙여주지 않고 메소드의 정의한 부분이 틀린경우 Jave에서 알려주지 않습니다

이렇게 되는 경우에는 상속받아 오버라이딩하는 메소드가 아닌 전혀 다른 메소드로 인식합니다

 

  • Private_메소드 상속하는 경우

private으로 지정한 메소드 hi의 경우 오버라이딩 불가하다

사진과 같이 부모 클래스에 private메소드를 만들고 자식 클래스에서 상속받아 오버라이딩 하는 경우

상속이 불가능하다는것을 알 수 있다

 

  • 인터페이스(Interface)란?

특이점은 메소드를 정의하는데 중괄호가 없다 (실행문이 없다)

  • 실행문이 없다면 실제 동작은 누가 ?

여기서 implements는 구현한다는 뜻이고 interface1이라 정의한 메소드를 구현한다는 의미이다

빈 실행내용이라도 반드시 작성해야한다

 

  • 인터페이스(Interface)의 특징

인터페이스 자체를 Interface1 int1 = new Interface1(); 이렇게 객체화 할 수 없다
그렇다면 객체화 하기 위해서는 ?

인터페이스 타입의 변수를 선언할 수 있다

하지만 인터페이스를 구현한 클래스의 생성자를 사용해야한다

즉 , 인터페이스는 생성자가 없다

(위 사진의 코드가 다형성이다 그렇기에 인터페이스를 이해하기 위해서는 다형성 개념을 이해해야한다 )

 

  • 다형성의 예시

다형성의 이해를 돕는 예시

인터페이스는 생성자가 없기 때문에 다른 클래스의 생성자를 사용해야합니다

그 방법이 다형성의 방법과 동일?하다 라고 이해함 맞는지 모르겠음

 

  • 인터페이스(Interface) 실습

인터페이스의 특징 1

인터페이스는 추상메소드이기 때문에 중괄호가 없고 실행문을 가질 수 없다

(즉 , 인터페이스는 실행문 , 생성자 둘다 가질 수 없다)

 

  • 인터페이스(Interface) 선언법

인터페이스는 위에 설명한것과 같이 생성자가 없기 때문에

다른 객체의 생성자를 사용하여 선언해주어야합니다

이것이 다형성과 비슷하기 때문에 다형성의 이해도가 어느정도 있으면 좋습니다

 

  • 인터페이스(Interface)를 사용하는 이유

프로그램을 설계할때 규격을 설정하기 편하고

설계의 규격이기 때문에 수리하기도 매우 편하다

나도 잘 모른다(수업 들어도 이해하기 힘들다)

 

  • 추가+ 상속에 대해

그렇다고한다

 

인터페이스의 예제

src.zip
0.01MB

'나의 수업일지' 카테고리의 다른 글

인천 일보 아카데미 24일차 - mysql , 데이터베이스란? , SQL 문법 분류/용어 , mysql 계정만들기  (0) 2023.03.27
인천 일보 아카데미 20일~23일 - 개인 프로젝트(콘솔 게임 만들기)  (0) 2023.03.27
인천 일보 아카데미 (저장용) refactorting 해보기  (0) 2023.03.20
인천 일보 아카데미 18일차 Map으로 수정하기  (1) 2023.03.18
인천 일보 아카데미 17일차 코드리딩/리팩토링/Map으로 만들어보기  (0) 2023.03.16
'나의 수업일지' 카테고리의 다른 글
  • 인천 일보 아카데미 24일차 - mysql , 데이터베이스란? , SQL 문법 분류/용어 , mysql 계정만들기
  • 인천 일보 아카데미 20일~23일 - 개인 프로젝트(콘솔 게임 만들기)
  • 인천 일보 아카데미 (저장용) refactorting 해보기
  • 인천 일보 아카데미 18일차 Map으로 수정하기
GUPING
GUPING
안녕하세요 개발자를 꿈꾸는 GUPING 입니다
GUPING
개발자를 꿈꾸는 GUPING
GUPING
전체
오늘
어제
  • 분류 전체보기 (89)
    • 나의 수업일지 (88)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 버튼2가지이벤트
  • 로그인게시판
  • 페이징Controller
  • 페이징
  • 파일이름가져오기
  • Ajax
  • 다중프리뷰
  • 파일 이름 가져오기
  • 업로드파일이름출력
  • PAGE
  • 지식인
  • 삭제
  • pagingAjax
  • 여러사진프리뷰
  • naver
  • 버튼 이벤트 함수 변경
  • 클래스 이름 변경
  • realative
  • 수정
  • 네이버
  • 버튼 이벤트 변경
  • 로그인form
  • Paging
  • 답변 채택
  • 개힘드렁
  • 검색
  • 파일이름(다중)
  • 검색결과페이징
  • 틀만들기
  • 로그인 경고문

최근 댓글

최근 글

hELLO · Designed By 정상우.
GUPING
인천 일보 아카데미 19일차_상속-좀 더 알아보기 / 인터페이스란 ?
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.