일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- richtext
- 속초여행
- 상속
- 노마드코더
- 아스키코드
- 알고리즘
- 가상환경
- 코딩독학
- 강원도속초맛집
- 장고
- popupmenubutton
- c언어문자열
- Python
- removetooltip
- 컴퓨터과학
- 추상클래스
- 부스트코스
- 정렬알고리즘
- pipenv
- python3
- 건대입구맛집
- 남양주맛집
- Django
- 자바
- 포인터
- BeautifulSoup
- FLUTTER
- 성수동카페
- JavaScript
- DOM
- Today
- Total
YUYANE
JAVA / 상속 - 생성자 본문
1. 기본 개념(Inheritance)
- 일반적으로 '유산을 상속받다'라는 말에서 처럼 자바에서는 자식 클래스가 부모 클래스의 멤버(변수)들을 상속 받고자 하는 개념으로 사용된다.
- 코드
class Parent { }
class Child extends Parent { }
- 자식 클래스는 본인이 지닌 변수들 이외에 부모 클래스의 변수들까지 포함한다.
자식 클래스 변수 갯수 >= 부모 클래스 변수 갯수
2. 주의사항
- 부모 클래스에서 private으로 선언 된 변수는 상속되지 않음
- 다중 상속 x, 단일 상속만 허용
3. 상속을 사용하는 이점
- 부모 클래스의 멤버들을 자식 클래스에서 따로 선언할 필요 없이 멤버를 사용할 수 있기 때문에, 시간적인 측면에서 효율적이다.
4. 상속에 있어서의 생성자
- 생성자와 초기화 블럭은 상속 되지 않고, 멤버만 상속되지만, 자식 클래스에서 인스턴스를 생성할 때, 부모 클래스의 기본 생성자를 자동 호출한다.
- 자식 객체를 생성하면, 부모 객체를 먼저 생성한 후 자식 객체가 그 다음에 생성된다. 코드상에서 구현은 되어있지 않음.
//부모 클래스
public class Coffee {
String beans;
String flavor;
public Coffee() {
System.out.println("커피 원두 마다 다른 맛이 난다.");
}
public void Print() {
System.out.println("커피 원두와 맛 : " + beans + flavor);
}
}
//자식 클래스
public class Cafe extends Coffee{
String name;
public Cafe(String name) {
System.out.println(name+"커피는 맛있다.");
}
public static void main(String[] args) {
Cafe 카페 = new Cafe("별다방");
}
}
- 자식 클래스에 default 생성자가 있으면 그 생성자에는 부모클래스의 생성자(super()) 호출이 compile시 자동 삽입된다. (코드 상에는 없지만, 내부적으로 부모 객체 생성 후에 자식 객체가 생성된다.)
//부모 클래스
public class Coffee {
String beans;
String flavor;
// 명시적인 생성자가 없다. 이 경우에 컴파일러가 알아서 기본 생성자를 생성하여 호출한다.
public void Print() {
System.out.println("골목에 있는 카페의 원두와 맛 : " + beans + flavor);
}
}
//자식 클래스
public class Cafe extends Coffee{
// 명시적 생성자
public Cafe(String beans, String flavor) {
//자식 클래스 생성자 선언 맨 첫줄에 컴파일러에 의해부모 클래스의 생성자 super();가 선언된다.
//만약에 부모 클래스에 명시적 생성자 선언이 있다면 자식 크래스 내부 첫줄에 직접 super(매개값, 매개값...);과 같이 선언해주어야 한다.
//컴파일러는 기본 생성자만 담당하기 때문이다.
this.beans = beans;
this.flavor = flavor;
}
public static void main(String[] args) {
Cafe cafe = new Cafe("고소한 원두","고소한 맛");
cafe.Print();
}
}
** 참고 사이트
https://roughexistence.tistory.com/141
chanhuiseok.github.io/posts/java-1/
** 참고 문헌
자바의 정석 (남궁 성 지음)
**초보 개발자가 정리한 글입니다. 혹시 잘못된 정보 발견하시면 댓글로 알려주세요! 감사합니다.
'Programming Languages > JAVA' 카테고리의 다른 글
JAVA / 각 자릿수의 합을 구하기 (백준 4673번) (0) | 2020.11.23 |
---|---|
JAVA / nextInt( ) 다음에 nextLine( )을 입력 받을 때 생길 수 있는 오류(백준 4344 자바) (0) | 2020.11.20 |
JAVA / split으로 string 문자열 나누어 배열에 저장하기 (백준 8958 자바) (0) | 2020.11.20 |
JAVA / 상속 - 추상 클래스 (0) | 2020.10.02 |
JAVA/ 상속 - 캐스팅 (업캐스팅, 다운캐스팅) (0) | 2020.10.01 |