일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 삼항연산자
- 제어문
- .repeat
- 오라클
- 객체
- SELECT 절
- 상속
- Join
- setter
- SQL
- 향상된for문
- 카카오인턴십
- executeUpdate
- for문
- int오류
- .substring
- sql오류
- ifelse
- HAVING
- 연산자
- 프로그래머스
- 겟터
- 생성자
- Java
- 칼럼명에 별칭 지정
- 이터레이블
- 생성자쓰는이유
- 자바
- 작성순서
- getter
- Today
- Total
CoDream
[JAVA] 상속extend / 부모 클래스(Superclass), 자식 클래스(Subclass) 본문
상속
클래스가 다른 클래스로부터 속성과 메서드를 물려받는 것을 의미합니다. 이것은 코드의 재사용성을 증가시키고, 객체 간의 관계를 구조화하여 객체지향 프로그래밍의 기본 원칙 중 하나인 "재사용성"과 "확장성"을 충족시킵니다.
자바에서는 extends 키워드를 사용하여 상속을 구현합니다. 기존 클래스를 상속하여 새로운 클래스를 만들 때, 새로운 클래스는 기존 클래스의 모든 멤버(필드와 메서드)를 상속받습니다.
이 때, 상속받은 멤버 중에서 **private**으로 선언된 멤버는 상속받지 못하며,
**public**이나 **protected**으로 선언된 멤버만 상속받을 수 있습니다.
상속 예제
// 부모 클래스
class Animal {
String species;
public void sound() {
System.out.println("Animal makes a sound");
}
}
// 자식 클래스
class Dog extends Animal {
public void sound() {
System.out.println("Dog barks");
}
}
public class Main {
public static void main(String[] args) {
Dog dog = new Dog();
dog.sound(); // "Dog barks" 출력
}
}
Dog 클래스는 Animal 클래스를 상속받았습니다. 따라서 Dog 클래스는 Animal 클래스의 species 필드와 sound() 메서드를 사용할 수 있습니다. 또한, Dog 클래스에서 sound() 메서드를 오버라이딩하여 자신만의 동작을 구현했습니다.
이처럼 상속을 통해 클래스 간의 계층 구조를 형성하고, 부모 클래스의 특징을 재사용하면서 자식 클래스에서 필요에 맞게 기능을 확장할 수 있습니다.
부모 클래스와 자식 클래스는 객체 지향 프로그래밍에서 사용되는 중요한 개념입니다. 이러한 개념은 상속을 통해 객체 간의 관계를 정의하고 구조화하는 데 사용됩니다.
- 부모 클래스 (Parent Class 또는 Superclass):
- 일반적으로 더 일반적이고 포괄적인 특성을 가지며, 여러 자식 클래스에서 공유될 수 있는 기능을 정의합니다.
- 부모 클래스는 다른 클래스에게 속성과 메서드를 상속하는 클래스입니다.
- 부모 클래스의 멤버들 중에서 **private**로 선언된 것들은 자식 클래스에게 상속되지 않습니다.
- 예를 들어, "동물"이라는 부모 클래스가 있을 수 있고, 이 클래스는 "포유류", "조류", "파충류" 등의 자식 클래스들에게 상속될 수 있습니다.
- 자식 클래스 (Child Class 또는 Subclass):
- 자식 클래스는 하나 이상의 부모 클래스로부터 상속받은 속성과 메서드를 가지는 클래스입니다.
- 자식 클래스는 부모 클래스의 기능을 확장하거나 변경하여 더 특화된 기능을 제공할 수 있습니다.
- 부모 클래스의 모든 public 및 protected 멤버들을 상속받습니다.
- 예를 들어, "개"나 "고양이"와 같은 자식 클래스들은 "동물" 부모 클래스에서 상속받은 공통 속성과 메서드를 가지면서 각각의 독특한 특성을 추가할 수 있습니다.
자바에서는 extends 키워드를 사용하여 클래스를 상속할 수 있습니다. 예를 들어, **class Dog extends Animal**와 같이 자식 클래스가 부모 클래스를 상속받습니다. 이를 통해 코드의 재사용성을 증가시키고, 객체 간의 관계를 보다 구조화된 형태로 표현할 수 있습니다.
자바는 단일 상속만을 지원합니다. 이것은 자바 클래스가 다른 클래스에서 상속받을 수 있는 클래스의 수가 하나로 제한된다는 것을 의미합니다. 즉, 하나의 클래스는 오직 하나의 클래스만을 상속받을 수 있습니다. 이는 다중 상속이 일부 언어에서 발생할 수 있는 다양한 문제를 피하기 위한 설계 결정으로 이루어졌습니다.
Java는 인터페이스를 통해 다중 상속에서 발생할 수 있는 일부 문제를 해결합니다.
'JAVA > JAVA 이론' 카테고리의 다른 글
[JAVA]Object 클래스, 다형성 (0) | 2024.03.04 |
---|---|
[JAVA] Override (메소드 재정의) (0) | 2024.03.04 |
[JAVA] 오버로딩(Overloading) (0) | 2024.02.28 |
[JAVA] 삼항 연산자(Ternary Operator) / if - else대신 사용 (0) | 2024.02.28 |
[JAVA] 전역변수 = static변수 (0) | 2024.02.28 |