method overloading이란 하나의 클래스에
같은 이름의 method를 여러개 정의하는걸
오버로딩이라고 한다
overloading 조건에는 method 이름이 같아야하고
매개변수의 개수, 데이터타입 또는 순서가 달라야한다.
매개변수가 달라 함수명을 달리해야할경우
개발자 입장에서 불편하기때문에 overloading을 사용한다
//public class MethodOverloading
public void getAdd() {
System.out.println("overloading");
} //매개변수가 없기때문에 문제없이 overloading이 된다
public int getAdd(int i, int j) {
return i+j;
}
public int getAdd(int i, int j, int k) {
return i+j+k;
}
public double getAdd(double i, int j, int k) {
return (double)(i+j+k);
}
public int getAdd(float i, int j, int k) {
return (int)(i+j+k);
}
public int getAdd(int i, float j, int k) {
return (int)(i+j+k);
} //data type의 순서가 다르기 때문에 overloading이 성립된다
public double getAdd(int i, int j, int k) {
return i+j+k;
} //return 타입은 관계가없고 갯수가 같으므로 overloading이 되지 않는다
public double getAdd(int ii, int jj) {
return ii+jj;
} //매개변수의 타입이같고 갯수가 같아서 overloading이 되지 않는다
//main
MethodOverloading mOver = new MethodOverloading(); //객체생성
mOver.getAdd();
int a = mOver.getAdd(1,2);
int b = mOver.getAdd(1,2,3);
double e = mOver.getAdd(1.3, 2, 3);
int c = mOver.getAdd(1.2F, 2, 4);
int d = mOver.getAdd(1, 1.2F,3);
System.out.println(a+b+c+d+e);
--------
//class TextBook
String title;
String author;
int grade;
public TextBook() {
title = "kor";
author = "jusung";
}
//생성자는 멤버변수를 초기화 할때 사용한다
//변수앞에 String을 붙여서 초기화할시
//지역변수가되서 초기화가되지않는다
1.
public TextBook(String title) {
this.title = title;
}
//매개변수 갯수가 달라서 오버로딩이 성립된다
2.
public TextBook(String title) {
this(title,"jusung"); //생성자가 생성자를 호출할수있다
}
//this()는 생성자를 호출하는 method
//this()는 생성자 안에서만 사용한다
//this()는 반드시 생성자 첫줄에 써야한다
public TextBook(String title, String author) {
this.title = title;
this.author = author;
}
//자기 클래스의 instance 변수를 접근할때 this를 사용한다
//사용자가 생성자를 만들경우 기본생성자가 생성되지않는다
//매개변수를 가지는 생성자를 인자생성자라고한다
//this는 static method에서는 사용할수 없다.
public TextBook(String title, String author, int grade) {
this.title = title;
this.author = author;
this.grade = grade;
}
public void getBook() {
System.out.println(this.title);
System.out.println(author);
System.out.println(grade);
} //this를 넣나 안넣나 상관이 없다.
//public class ConstructorOverloading
//main
TextBook tb = new TextBook();
System.out.println(tb.title); //kor이 출력된다
System.out.println(tb.author); //jusung이 출력된다
//기본생성자 초기화를 kor, jusung으로 했기때문이다
TextBook tb = new TextBook("kor","jusung");
System.out.println(tb.title); //kor이 출력된다
System.out.println(tb.author); //jusung이 출력된다
TextBook tb1 = new TextBook("kor");
tb1.getBook();
//1. "kor"이 출력되고 나머지는 default값
//2. 생성자가 생성자를 호출한경우
//"jusung"도 같이 출력되고 나머진 default값
TextBook tb2 = new TextBook("kor","jusung");
tb2.getBook();
//"kor","jusung"이 출력되고 나머지는 default값
TextBook tb3 = new TextBook("kor","jusung",5);
tb3.getBook();
//"kor","jusung",5 이 출력된다
'java' 카테고리의 다른 글
inheritance(상속), overriding (0) | 2019.08.02 |
---|---|
캡슐화(encapsulation) (0) | 2019.08.02 |
return, 매개변수 (0) | 2019.08.02 |
class, instance 변수 와 method (0) | 2019.08.02 |
class 객체 및 instance, 멤버요소들 (0) | 2019.08.02 |