일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 데이터길이
- SQL
- 동적계획법
- 그대로 출력하기
- Algorithm
- JOIN
- ANSI JOIN
- DP
- 10951
- Java
- 알고리즘
- Eclipse
- oracle
- 반복문
- db
- algoritm
- 2156
- select
- 데이터베이스
- darkest dark
- Database
- 오라클
- 입출력
- n x 2 타일링 2
- 문자열
- 백준
- Dynamic Programming
- 소숫점처리
- 자바
- 변수
Archives
- Today
- Total
Cracking Code
[Java] 상속 (Inheritance) 본문
상속은 기존 클래스의 기능을 추가하거나 재정의하여 자식 클래스를 정의하는 것을 의미합니다.
상속
객체의 관계는 같은 종류여야합니다.
상속 관계가 성립되면 자식 클래스에서는 부모 클래스의 구성을 선언 없이 사용할 수 있습니다.
단, 생성자와 private으로 지정된 속성은 사용할 수 없습니다.
자바는 단일 상속만 지원하며 자식 클래스는 하나의 부모 클래스만 상속 받을 수 있습니다.
public class class_name extends p_class_name {}
extends 키워드를 사용하여 부모 클래스와 상속 관계를 정의할 수 있습니다.
상속 관계의 객체 생성 순서도
Man 클래스는 Emp 클래스를 상속받은 클래스입니다.
자식 클래스의 생성자가 호출되면 부모 클래스의 생성자가 호출되어 부모 객체가 생성되고
그 객체에 자식 객체 속성을 추가하여 생성합니다.
E.g.
// Emp.java -- 부모 클래스
public class Emp {
String name;
int age;
public Emp() {
}
public Emp(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
// Man.js -- 자식 클래스
public class Man extends Emp {
public Man(String name, int age) {
// super(); // 부모 클래스 생성자 호출
this.name = name;
this.age = age;
}
}
// Main.js -- 메인 클래스
public class Main {
public static void main(String[] args) {
Man m = new Man("dev우쟈", 20);
System.out.println(m.getName() + " " + m.getAge());
}
}
// 실행 결과
dev우쟈 20
Man 클래스는 Emp 클래스를 상속받은 클래스입니다.
Main 클래스에서 Man 타입 변수 m에 생성자와 인자들을 사용해 Man 객체를 생성합니다.
이때, Man 클래스의 생성자가 호출되면 멤버 변수들을 초기화하기 전 Emp 클래스의 기본 생성자를 호출하게 됩니다.
Emp 클래스의 속성을 먼저 만들고
자식 클래스인 Man 클래스의 속성을 추가하여 Man 객체를 생성하게 되는 것입니다.
그러므로 Man 클래스에 멤버 변수를 따로 지정하지 않아도 부모 클래스인 Emp 클래스의 속성들을 사용할 수 있습니다.
'Java > Java language' 카테고리의 다른 글
[Java] 다형성 (Polymorphism) (0) | 2020.08.25 |
---|---|
[Java] 메서드 오버라이딩 (Method Overriding) (0) | 2020.08.13 |
[Java] this 키워드 (0) | 2020.08.09 |
[Java] 생성자 (Constructor) (0) | 2020.08.06 |
[Java] 필드 (Field) (0) | 2020.08.05 |
Comments