Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 혁신의기술2:신뢰의미래 블록체인을 만나다
- StringTokenizer
- CSS 기초
- biginteger사용법
- 티스토리챌린지
- 오블완
- 우선순위큐
- html기초
- Entity
- 시스템프로그래밍
- 딥러닝
- 자바스크립트
- TypeScript
- 해시
- Node
- stringreader
- 컴파일시스템
- 블록체인강의
- 자바입력받기
- 2차원배열정렬
- 블록체인
- 머신러닝
- K-MOOC 단국대학교 홍보단
- 디스크블록할당
- StringBuilder
- K-MOOC
- 단국대학교 k-mooc
- 자바문자열구분
- 블록체인 강의
- national instruments
Archives
- Today
- Total
열정 실천
[Java] 객체 지향 프로그래밍의 핵심 :: 상속 _ 오버라이딩, 추상클래스, super 본문
728x90
객체 지향 프로그래밍에서는 상속이라는 개념을 통해 한 클래스가 다른 클래스의 속성와 메소드를 재사용할 수 있다.
- 부모 클래스(Superclass 또는 Parent class): 다른 클래스에 의해 상속되는 클래스입니다. 부모 클래스의 필드와 메서드는 자식 클래스에 상속됩니다.
- 자식 클래스(Subclass 또는 Child class): 부모 클래스를 상속받아 생성된 클래스입니다. 자식 클래스는 부모 클래스의 모든 **멤버(필드와 메서드)**를 상속받으며, 추가적인 필드와 메서드를 정의하거나 부모의 메서드를 재정의할 수 있습니다.
extends
자바에서는 extends 키워드를 사용하여 상속을 구현한다.
class Animal {
}
class Dog extends Animal {
}
오버라이딩
자식 클래스가 부모 클래스에서 정의된 메소드를 재정의하여 사용하는 것을 의미한다.
이는 객체 지향 프로그래밍에서 다형성을 구현하는 중요한 기능 중 하나이다.
- 메소드 이름과 매개변수 목록이 동일해야 한다.
- 반환 타입은 같거나, 자식 클래스 타입이어야한다.
- 접근 제어자는 부모 클래스의 메소드와 같거나 더 넓은 범위를 가져야 한다.
(부모 : protected 일 때, 자식 : public 가능)
class Animal {
public void makeSound() {
System.out.println("Some sound");
}
}
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Bark");
}
}
super 키워드
자식 클래스에서 부모 클래스의 생성자나 메서드를 호출할 때 사용한다. 자식 클래스의 생성자는 반드시 부모 클래스의 생성자를 호출해야 하며, 이때 super()를 사용한다.
class Animal {
public void makeSound() {
System.out.println("Some sound");
}
}
class Dog extends Animal {
@Override
public void makeSound() {
super.makeSound(); // 부모 클래스의 makeSound() 메소드 호출 "Some sound" 출력
System.out.println("Bark"); // "Bark" 출력
}
}
public class Main {
public static void main(String[] args) {
Dog dog = new Dog(); // Dog 객체 생성
dog.makeSound();
}
추상클래스 abstract
객체를 생성할 수 없는 클래스이다. 추상 클래스는 주로 공통된 속성과 메소드를 정의하고, 이를 상속받는 자식 클래스에서 구체적인 구현을 제공하도록 강제하는 용도로 사용된다.
// 추상 클래스
abstract class Animal {
// 일반 메소드
public void eat() {
System.out.println("This animal is eating");
}
// 추상 메소드
public abstract void makeSound(); // 자식 클래스에서 구현해야 함
}
// Dog 클래스는 Animal 클래스를 상속받고 추상 메소드를 구현해야 함
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Bark");
}
}
// Cat 클래스도 Animal 클래스를 상속받고 추상 메소드를 구현해야 함
class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("Meow");
}
}
public class Main {
public static void main(String[] args) {
Animal dog = new Dog(); // Dog 객체 생성
dog.eat(); // "This animal is eating" 출력
dog.makeSound(); // "Bark" 출력
Animal cat = new Cat(); // Cat 객체 생성
cat.eat(); // "This animal is eating" 출력
cat.makeSound(); // "Meow" 출력
}
}
자식클래스로 생성한 객체를 부모클래스의 타입으로 형변환을 하는 경우가 있는데 (또는 반대로) 이는 변수와 메소드 사용에 제한을 주게 된다. 더 자세한 설명과 예시는 아래 글에서 확인가능!-!
https://guun-oni.tistory.com/113
728x90