YYYEJI

[JAVA] 오버라이딩(Overriding)이란? 본문

Java

[JAVA] 오버라이딩(Overriding)이란?

YEJI ⍢ 2022. 12. 27. 04:15
728x90

오버라이딩(Overriding)이란?

상속 관계에 있는 상위 클래스(부모 클래스)에서 이미 정의된 메소드를 하위 클래스(자식 클래스)에서

같은 signature로 다시 정의하는 것을 의미합니다.

 

 

NOTE) final method는 오버라이딩(overriding)이 불가능합니다.

 

 

코드를 하나하나 살펴보겠습니다.

 

상위 클래스(부모 클래스)


public class Person {
	private String name;
	
	public Person() {
		name = "";
	}
	
	public Person(String name) {
		this.name = name;
	}
	
	public void setName(String name) {
		this.name = name;
	}
	
	public String getName() {
		return name;
	}
	
	public String toString() {
		return "Name: " + name;
	}
}

상위 클래스로 생성자(constructor), setter, getter 마지막으로 toString 메소드(method)를 생성했습니다.

 

여기서 주요깊게 봐야할 메소드(method)는 toString()입니다.

 

 

하위 클래스(자식 클래스)


 

public class Student extends Person {
	private int age;
	
	public Student() {
		super();
		age = 0;
	}
	
	public Student(String name, int number) {
		super(name);
		age = number;
	}

	@Override
	public String toString() {
		return "Name: " + getName() +"\nAge: " + this.age;
	}
}

Person을 extends해서 Student는 하위 클래스가 되었습니다.

생성자(constructor)을 생성할 때 super() method를 통해 상위 클래스의 변수도 같이 초기화 시켜줍니다.

 

 

부모와 같은 이름(name), 시그니쳐(signature)을 가지고 메소드(method)의 내용만 다시 정의해 주었습니다.

 

 

메인 메소드


public static void main(String[] args) {
	Person person = new Person("Rosie");
	Student student = new Student("Rosie", 22);
	System.out.println(person.toString() + "\n");
	System.out.println(student.toString());
}

Person의 객체를 생성해서 toString()을 사용했을 때와 Student의 객체의 toString()을 사용한 결과는 다른 것을 확인할 수 있습니다.

 

 


이렇게 상위 클래스의 메소드(method)와 같은 이름(name)과 시그니쳐(signature)를 가지고

하위 클래스에서 새로 정의하는 메소드(method)를 overriding 이라고 합니다.


 

 

 

◡̈

'Java' 카테고리의 다른 글

[JAVA] 추상 클래스(Abstract Class)란?  (0) 2022.12.27
[JAVA] 인터페이스(Interface)란?  (0) 2022.12.27
[JAVA] Super 메소드  (0) 2022.12.27
[JAVA] 상속(Inheritance)란?  (0) 2022.12.27
[JAVA] Java의 다차원 Array  (0) 2022.12.27