[Java] 클래스 상속, 메소드 오버라이딩, 메소드 오버 로딩

sm·2023년 3월 28일
0

Web

목록 보기
24/24

클래스 상속

  • 부모 클래스에서 정의된 필드와 메소드를 자식 클래스가 물려받는 것
  • 장점
    : 멤버의 중복 작성 제거, 클래스의 계층적 분류 가능, 클래스의 재사용과 확장성 용이

상속 문법

  • extends 키워드 사용
public class Person {
...
}

public class Researcher extends Person { //person을 상속받는 researcher 선언
}

간단 예제

public class Person {
	private int age;
    private String name;
    
    public int getAge() {
    	return age;
    public void setAge(int age) {
    	this.age = age;
    }
    public String getName() {
    	return name;
    }
    public void setName(String name) {
		this.name = name;
    }
 }
 
 ------
 상속받는 클래스
 
 public class Student extends Person {
	private String school; 
    
    public Student (int age, String name) {
    	setAge(age);
        setName(name);
  
    }
    public String getSchool() {
    	return school;
    }
    public void setSchool(String school) {
    	this.school = school;
    }
 }
 => 부모 클래스 멤버에 접근이 가능하다!!! 

  • 슈퍼(부모) 클래스 생성자를 호출할 때
    => 서브 클래스 첫 줄에서 super() 사용
  • super() : 부모 클래스의 생성자를 호출하는 메서드 - 매개변수를 변수로 받을 수 있는 생성자를 부모 클래스에서 찾게 된다.
public class Person {
	private int age;
    private String name;
    
    public Person(String name) {
    	setName(name);
    }
    ...
    public void setName(String name) {
    this.name= name;
  	}
 }
-----
public class Student extends Person {
	private String school;
    
 	public Student(int age, String name) {
 	super(name);
    setAge(age);
  }
  ...
 

메소드 오버라이딩

  • 메소드 오버 라이딩: 부모 클래스(슈퍼 클래스)에서 정의한 메소드를 자식 클래스(서브 클래스)에서 다시 정의하는 것
    • 메소드의 이름, 매개변수 타입 및 개수, 리턴 타입 등 모든 것을 동일하게 작성 ⇒ 함수의 원형이 완전히 똑같아야 한다(매개변수의 개수, 유형). 내용은 달라도 된다.
//person 클래스
public void printName() {
	System.out.println("익명");
}

//Student클래스
public void printName() {
	System.out.println(getName());
}

메소드 오버 로딩: 같은 이름으로 여러개의 메소드를 만드는 것

단, 매개변수가 달라야 한다. 매개변수의 개수 또는 타입이 다르면 다시 메소드를 정의할 수 있다.

profile
📝

0개의 댓글