다형성
오버로딩, 오버라이딩, 업캐스팅 등 같은 객체나 메소드를 다양한 형태, 방식으로 표현하여 생성할 수 있다
오버로딩
서로 다른 여러개의 비슷한 기능을 가진 메소드가 존재하는 경우,
메소드명을 하나로 통합하고, 매개변수의 갯수나 자료형을 다르게 줘서 마치 다른 메소드처럼 구분하여 호출할 수 있다
-생성자 오버로딩
-메소드 오버로딩
(생성자 메소드 또한 일반 메소드에 포함되지만 개념 설명을 위해 나눠서 정리 )
생성자 오버로딩
다양한 방법으로 멤버변수의 값을 초기화시킬 수 있다
class Person2{
private String name;
private int age;
Person2(){
name="홍길동";
age=27;
System.out.println("person의 기본생성자 호출됨");}
Person2(String n, int a){
name=n;
age=a;
System.out.println("name="+name+", age="+age);
}
Person2(String n){
name=n;
System.out.println("name="+name+", age="+age);
}
Person2(int a){
age=a;
System.out.println("name="+name+", age="+age);
}
}
public class test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Person2 p1 = new Person2("김철수",23);
//person클래스의 p2객체를 생성하면서 문자열 하나인 생성자 호출
Person2 p2=new Person2("테스트");
//person클래스의 p3객체를 생성하면서 정수형 1개짜리 생성자 호출
Person2 p3=new Person2(35);
}
}
/*
name=김철수, age=23
name=테스트, age=0
name=null, age=35 */
메소드 오버로딩
비슷한 기능을 하는 메소드를 오버로딩하여 사용
public class PrintTest {
void print(String a) {//입력 -> 출력
System.out.println("a=>"+a);
}
void print(int a) {
System.out.println("a=>"+a);
}
void print(boolean a) {
System.out.println("a=>"+a);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
PrintTest p1 = new PrintTest();
p1.print("철수");
p1.print(21);
p1.print(2>1);
}
}
/*
a=>철수
a=>21
a=>true */
'JAVA' 카테고리의 다른 글
[JAVA]생성자, 일반메서드, 정적메서드, 메서드영역, 힙영역, 스택영역 (0) | 2021.01.14 |
---|---|
[JAVA] this 사용법/ 예시 (0) | 2021.01.13 |
[JAVA]생성자 개념/ 목적/ 예시 (0) | 2021.01.11 |
[JAVA]메서드(매개변수O, 반환값O), 캡슐화, private, Setter Method, Getter Method (0) | 2021.01.06 |
[JAVA]객체지향 프로그래밍(oop), 클래스, 메소드, 객체, 인스턴스, equals(), contentEquals() (0) | 2021.01.05 |