Overloading이란 같은이름의 맴버들을 작성하는 걸 뜻한다.
매개변수등이 달라져도 같은 동작을 하는 맴버들을 만들기 위해서 사용한다.
메소드 오버로딩 생성자 오버로딩 2가지가 있다.
Overriding은 부모 클래스의 메소드가 자식 클래스에 맞지 않아서 재정의 하는 것을 의미한다.
메소드 Overriding이 있다.
- 부모의 메소드와 동일한 이름, 변수리스트, 리턴타입을 가져야 한다.
- 접근 제한을 더 강하게 오버라이딩할 수 있다.
- 새로운 예외를 할 수 없다.
생성자 오버로딩
다양한 데이터를 사용해서 객체(class)를 생성하려면 생성자도 다양화 될 필요가 있다.
이때 Overloading을 사용하면 편리해진다.
public class Person {
private String name;
private int age;
public Person() { // 매개변수 없는 생성자
name = "Unknown";
age = 0;
}
public Person(String name) { // 이름만 받는 생성자
this.name = name;
age = 0;
}
public Person(String name, int age) { // 이름과 나이를 받는 생성자
this.name = name;
this.age = age;
}
}
다음 코드를 보면 Person이라는 class가 있고 이 class의 생성자가 3개가 있다. 매개변수를 받지 않는것, 이름만 받는 것, 이름과 나이를 받는 생성자가 있다.
이때 받는 매개변수가 달라지며 어떤 매개변수가 안받아지면 초기값을 자동으로 넣어주도록 만들어져 있다.
메소드 오버로딩
메서드 오버로딩은 이름의 메서드를 여러번 정의하는 것을 말한다.
이또한 메소드들의 매개변수를 다양화해서 다양한 기능을 하도록 만든다.
public class OverloadExample {
public void print(int num) {
System.out.println("정수 값: " + num);
}
public void print(double num) {
System.out.println("실수 값: " + num);
}
}
num값을 받은걸 출력해주는 print메소드가 있는데 int형 변수값으로 받는지 double 변수값으로 받는지에 따라 다른 방식으로 작동하는 걸 볼 수 있다.
생성자 오버로딩
다양한 데이터를 사용해서 객체(class)를 생성하려면 생성자도 다양화 될 필요가 있다.
이때 Overloading을 사용하면 편리해진다
public class Calculator{
double areaCircle(double r){
return 3.14159 * r * r;
}
}
다음과 같은 부모역할을 할 class가 있다.
public class Computer exxtends Calculator{
@Override
double areaCircle(double r){
return Math.pi * r * r;
}
}
@Override어노테이션을 사용해서 Override했다는 표시를 해주고 부모 class인 Calculator의 기능을 바꿔준다.
부모는 3.14159값을 사용하지만 자식은 Math.pi를 사용해서 좀더 정확한 계산을 할 수 있도록 해준다.
'JAVA > JAVA 기초' 카테고리의 다른 글
[Java/기초] 접근 제한자 (public, protected, default, private) (0) | 2024.04.12 |
---|---|
[Java/기초] abstract (0) | 2024.03.04 |
[Java/기초] Static, Final (0) | 2024.03.04 |
[Java/기초] Getter Setter (0) | 2024.02.13 |
[Java/기초] Interface (0) | 2024.01.14 |
Coding, Software, Computer Science 내가 공부한 것들 잘 이해했는지, 설명할 수 있는지 적는 공간