Java(클래스의 상속)

2023. 3. 6. 20:19WEB개발/TIL

반응형

클래스의 상속

: 부모 클래스에서 정의된 필드와 메서드를 자식 클래스가 물려받는 것

 

장점

멤버의 중복 작성 제거

클래스의 계층적 분류 가능

클래스의 재사용성과 확장성 용이

 

클래스 상속 예시

클래스 상속 예시

부모/슈퍼클래스: ex) Person

자식/서브클래스: ex) Student

 

 

상속문법

1. extends 키워드 사용

// Person 클래스
public class Person {
}

// Student 클래스는 Person클래스의 상속을 받음
public class Student extends Person {
}

 

2. super() 메서드: 자식클래스에서 부모클래스 생성자 호출하는 메서드

// Person 클래스
public class Person {
	private String name;

	public Person(String name) {
		setName(name);
	}
}

// Student 클래스
public class Student extends Person {
	public Student(String name) {
		// 부모클래스 생성자 호출
		super(name);
	}
}

참고) 부모클래스 생성자

부모클래스에서 생성자가 하나도 없는 경우, 자동으로 (기본)생성자가 만들어짐

ex) public Person() { }

<-> 부모 클래스에서 생성자가 존재하는 경우, 기본 생성자가 생성되지 않음

 

 

3. 메서드 오버라이딩

: 부모클래스에서 정의한 메서드를 자식클래스에서 다시 정의하는 것(=덮어쓰기)

중요! 함수의 원형이 정확히 일치해야 함

  • 함수명, 매개변수 타입 및 개수, 리턴 타입 등
// Animal 클래스
public class Animal {
    public void makeSound() {
    	System.out.println("동물은 소리를 낸다");
    }
}

// Cat 클래스
public class Cat extends Animal {
	public void makeSound() {
    	System.out.println("냐옹");
    }
}

// Dog 클래스
public class Dog extends Animal {
	public void makeSound() {
    	System.out.println("멍멍");
    }
}

// Main 클래스
public class Main {
	public static void main(String[] args) {
    	Animal animal = new Animal();
        Cat cat = new Cat();
        Dog dog = new Dog();
        
        animal.makeSound(); // 동물은 소리를 낸다
        cat.makeSound(); // 냐옹
        dog.makeSound(); // 멍멍
    }
}
반응형

'WEB개발 > TIL' 카테고리의 다른 글

Spring 정의, Spring Boot, Thymeleaf 문법  (0) 2023.03.21
Java(추상클래스, 인터페이스)  (0) 2023.03.09
Java(Array, Class)  (0) 2023.03.06
Java(개발환경구축, 프로젝트 생성, 기본 문법)  (0) 2023.03.06
Express 모듈  (2) 2022.11.23