자바에서 다형성을 지원하는 방법 => 메소드 오버로딩(Overloading)과 오버라이딩(Overriding)
오버로딩(Overloading)
같은 이름의 메소드를 여러 개 가지면서 매개변수의 유형과 개수가 다르도록 하는 기술
static class Human {
String name;
String sex;
int age;
// 오버로딩
public Human() {}
public Human(String name) {}
public Human(String name, String sex) {}
// public human(String sex, String name) {} 순서가 다르면 같은걸로 인정띠
public Human(String name, String sex, int age) {}
public Human(String name, int age, String sex) {} // 매개변수의 타입이 다를 경우는 순서가 다르면 가능
public void print() {
System.out.println("이름 : "+ this.name + ", 성별 : "+ this.sex+", 나이 : "+this.age);
}
public String print(String str) { // 매개변수는 원래 달라야하니까
return str;
}
public void method() {
System.out.println("Human");
}
}
오버라이딩(Overriding)
상위 클래스가 가지고 있는 메소드를 하위 클래스가 재정의 해서 상용
구분 | 오버로딩 | 오버라이딩 |
메서드 이름 | 같음 | 같음 |
매개변수, 타입 | 다름 | 같음 |
리턴타입 | 상관없음 | 같음 |
package 개념;
public class OverridingOverloading {
static class Human {
String name;
String sex;
int age;
// 오버로딩
public Human() {}
public Human(String name) {}
public Human(String name, String sex) {}
// public human(String sex, String name) {} 순서가 다르면 같은걸로 인정띠
public Human(String name, String sex, int age) {}
public Human(String name, int age, String sex) {} // 매개변수의 타입이 다를 경우는 순서가 다르면 가능
public void print() {
System.out.println("이름 : "+ this.name + ", 성별 : "+ this.sex+", 나이 : "+this.age);
}
public String print(String str) { // 매개변수는 원래 달라야하니까
return str;
}
public void method() {
System.out.println("Human");
}
}
static class Korean extends Human {
String WhereAreyouFrom;
public void print() {
super.print();
System.out.println("국적 : " + this.WhereAreyouFrom);
}
public void method() {
System.out.println("Korean");
}
}
public static void main(String[] args) {
Korean kistone = new Korean();
kistone.name = "hoho";
kistone.age = 19;
kistone.sex = "남";
kistone.WhereAreyouFrom="한국";
kistone.print();
/*
* 이름 : hoho, 성별 : 남, 나이 : 19
국적 : 한국
* */
Human h1 = new Human();
h1.method(); // Human
Human h2 = new Korean();
h2.method(); // Korean
Korean k = new Korean();
k.method(); // Korean
/*
출력
이름 : hoho, 성별 : 남, 나이 : 19
국적 : 한국
Human
Korean
Korean
* */
}
}
'기술면접대비' 카테고리의 다른 글
[JAVA] 접근 제어자 (public, private, protected, default) (0) | 2020.09.22 |
---|---|
[JAVA] 클래스/객체/인스턴스 (0) | 2020.08.25 |
[JAVA] StringTokenizer와 String split() 차이 (0) | 2020.08.21 |
[Web] HTTP Request Method /GET과 POST 비교 (0) | 2020.08.20 |
[Web] REST, REST API, RESTFUL의 모든것 (0) | 2020.08.19 |