
오버라이딩은 함수를 재정의 하기 위해 사용한다. 아래는 오버라이딩의 성립 조건이다.
public interface A_Interface {
public String run();
}
public class A_Implementation implements A_Interface {
public String run() {
return "run a_inplementation";
}
}
A_Interface를 구현하는 A_Implementation에서 부모와 같은 이름인 run 메서드를 오버라이딩 하여 구현한 클래스이다.
public class Main {
public static void main(String[] args) {
Overriding instance = new Implementation();
System.out.println(instance.run());
// run Implementation
}
}
Overriding 클래스 타입의 변수에 Implementation 클래스의 인스턴스를 넣음으로 결과는 Implementation에서 오버라이딩을 통해 재정의한 메서드의 결과를 얻을 수 있다.
오버로딩은 함수를 다중정의 하기 위해서 사용한다. 아래는 오버로딩의 성립 조건이다.
public class Overloading {
private String var_1;
private String var_2;
public Overloading() {
}
public Overloading(String var1) {
this.var_1 = var1;
}
public Overloading(String var_1, String var_2) {
this.var_1 = var_1;
this.var_2 = var_2;
}
public String getVar_1() {
return var_1;
}
public String getVar_2() {
return var_2;
}
}
Overloading 클래스에서는 같은 이름의 생성자를 여러개 만들었다.
public class Main {
public static void main(String[] args) {
Overloading instance;
instance = new Overloading();
System.out.println("var_1 = " + instance.getVar_1() + ", var_2 = " + instance.getVar_2());
instance = new Overloading("오버로딩");
System.out.println("var_1 = " + instance.getVar_1() + ", var_2 = " + instance.getVar_2());
instance = new Overloading("오버로딩", "사용");
System.out.println("var_1 = " + instance.getVar_1() + ", var_2 = " + instance.getVar_2());
}
}
위는 Overloading을 이용해 같은 생성자 호출이지만, 인자를 다르게 해서 생성했을 때의 차이점을 보여주는 코드이다. 똑같은 행위로 new 연산자를 사용해 Overloading 클래스의 인스턴스를 생성하지만, 어떤 생성자를 통해 인스턴스를 생성했냐에 따라 다른 결과를 보여주는 것을 알 수 있다.
오버로딩은 생성자 함수에서 많이 사용되고, 확장성있는 설계가 가능해진다.
Java 중요 개념 5가지
https://bytheprogramer-fortheprogramer.tistory.com/6