- Jave _ 상속(Inheritance)이란 ?
Java에서 상속이란 부모 클래스(물려주는 클래스) / 자식클래스(물려받는 클래스)로 나누어지고
상속받는 클래스에서 부모 클래스의 필드 / 메소드를 사용할 수 있게 하는것입니다 (단 private은 상속 불가)
- Jave _ 상속(Inheritance) 문법은 ?
extends라는 키워드가 사용이 된다
- 메소드 재정의(method overriding)
재정의 = 다시 정의한다
부모가 가진 메소드를 자식이 물려받고 자식에게 맞게 수정하는것을 말합니다
단 , 리탄타입 / 메소드 이름 / 매개변수는 수정이 불가능합니다
실행문만 수정이 가능합니다 (재정의하는경우 @Override이라는 문구가 붙는다)
- @란 ?
소스코드를 컴파일해서 실행하기 전에 먼저 체크해서 실행하게 된다
문법 체크 같은게 먼저 실행이된다 (재정의할때 꼭 쓸필요는 없다)
- 하지만 @를 쓰는 이유는 ?
붙어있으면 좋은점은 실수로 오버라이딩할 리탄타입 / 메소드 이름 / 매개변수 을 변경했다면
@Override를 붙여주면 Jave에서 정의 부분에 오류가 있음을 알려준다
- 상속_좀 더 알아보기
이제 Main으로 넘어와 상속받은 클래스를 사용해보면 ChildClass에서 만들지 않은
필드 name이 사용가능하다는걸알 수 있습니다
이렇게 생성하지 않은 필드나 메소드를 부모클래스에게 받아와 사용가능하게 하는것을 상속이라고 합니다
또한 위의 부모클래스 기본 생성자에 실행문을 넣었는데요
이또한 상속받은 클래스인 ChildClass에서 출력되는 것을 확인할 수 있습니다
이렇게 상속받는 클래스는 상속해주는 클래스의 기본 생성자까지도 상속받아 사용된다는 사실을알 수 있습니다
- 상속자 클래스와 상속받는 클래스 둘다 기본 생성자에 실행문이 있다면?
두가지 클래스 모두에 실행문이 있다면 부모 클래스의 기본생성자가 먼저 실행되고 이후 자식클래스의 생성자가
실행되는 모습을 확인할 수 있습니다
지금 당장은 크게 신경쓸 필요없지만 아마도 언젠가는 필요한 순간이 올지도 ?
- 상속받아 메소드를 사용하기
- 상속받은 메소드를 재정의하기
@Override를 붙여주지 않으면 Jave에서 문법이 틀려도 따로 알려주지 않는다
하지만 @Override를 붙여주면 Jave에 이메소드는 Override메소드라고 선언한다는 말이기 때문에
메소드의 문법이 틀린경우 알려준다
- @Override를 붙여주는 이유
@Override를 붙여주지 않고 메소드의 정의한 부분이 틀린경우 Jave에서 알려주지 않습니다
이렇게 되는 경우에는 상속받아 오버라이딩하는 메소드가 아닌 전혀 다른 메소드로 인식합니다
- Private_메소드 상속하는 경우
사진과 같이 부모 클래스에 private메소드를 만들고 자식 클래스에서 상속받아 오버라이딩 하는 경우
상속이 불가능하다는것을 알 수 있다
- 인터페이스(Interface)란?
- 실행문이 없다면 실제 동작은 누가 ?
여기서 implements는 구현한다는 뜻이고 interface1이라 정의한 메소드를 구현한다는 의미이다
빈 실행내용이라도 반드시 작성해야한다
- 인터페이스(Interface)의 특징
인터페이스 타입의 변수를 선언할 수 있다
하지만 인터페이스를 구현한 클래스의 생성자를 사용해야한다
즉 , 인터페이스는 생성자가 없다
(위 사진의 코드가 다형성이다 그렇기에 인터페이스를 이해하기 위해서는 다형성 개념을 이해해야한다 )
- 다형성의 예시
인터페이스는 생성자가 없기 때문에 다른 클래스의 생성자를 사용해야합니다
그 방법이 다형성의 방법과 동일?하다 라고 이해함 맞는지 모르겠음
- 인터페이스(Interface) 실습
인터페이스는 추상메소드이기 때문에 중괄호가 없고 실행문을 가질 수 없다
(즉 , 인터페이스는 실행문 , 생성자 둘다 가질 수 없다)
- 인터페이스(Interface) 선언법
인터페이스는 위에 설명한것과 같이 생성자가 없기 때문에
다른 객체의 생성자를 사용하여 선언해주어야합니다
이것이 다형성과 비슷하기 때문에 다형성의 이해도가 어느정도 있으면 좋습니다
- 인터페이스(Interface)를 사용하는 이유
프로그램을 설계할때 규격을 설정하기 편하고
설계의 규격이기 때문에 수리하기도 매우 편하다
나도 잘 모른다(수업 들어도 이해하기 힘들다)
- 추가+ 상속에 대해
그렇다고한다
인터페이스의 예제
'나의 수업일지' 카테고리의 다른 글
인천 일보 아카데미 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 |