반응형
오버로딩(Overloading)
같은 클래스 내에 여러개의 메소드 이름을 같이 쓸수가 있지만, 매개변수갯수가 달라야하고 타입이 달라야한다.
public class OverloadingTest {
public static void main(String[] args) {
MyMath3 mm = new MyMath3();
System.out.println ("mm.add(3, 3) 결과:" + mm.add(3,3));
System.out.println ("mm.add(3L, 3) 결과:" + mm.add(3L,3));
System.out.println ("mm.add(3, 3L) 결과:" + mm.add(3,3L));
System.out.println ("mm.add(3L, 3L) 결과:" + mm.add(3L,3L));
int[] a = {100, 200, 300};
System.out.println ("mm.add(a) 결과 : " + mm.add(a));
}
}
class MyMath3 {
int add(int a, int b){
System.out.print ("int add(int a, int b - ");
return a + b;
}
long add(int a, long b){
System.out.print ("long add(int a, long b) - ");
return a+b;
}
long add(long a, int b){
System.out.print ("long add(long a, int b) - ");
int c =0;
return a+b;
}
long add(long a, long b){
System.out.print ("long add(long a, long b) - ");
return a+b;
}
int add(int [] a){ // 배열의 모든 요소의 합을 결과로 돌려준다.
System.out.print ("int add(int [] a) - ");
int result = 0;
for(int i = 0; i <a.length; i++){
result += a[i];
}
return result;
}
}
오버라이딩(Overriding)
상위클래스에 있는 메소드이름을 하위클래스에서 사용할수가 있다.
리턴 타입, 매개변수의 갯수, 자료형과 순서를 동일하게 하여 자식 클래스에서 작성해야 한다.
class Goods{
String goodsName;
int goodsCount;
int printa(){
System.out.println ("상품 이름은" + this.goodsName+"이고, 상품 수량은 "+ this.goodsCount+"입니다");
return 1;
}
}
class Seller extends Goods{
String sellerName;
int printa(){ //매개변수의 갯수 같아도 상관없다.
System.out.println ("상품 이름은"+this.goodsName+"이고,, 상품수량" + this.goodsCount+"입니다.");
System.out.println (this.goodsCount+"상품은 "+ this.sellerName+"이 판매 담당자입니다");
int a = 5;
return a;
}
void printa(int a){
System.out.println ("상품 이름은"+this.goodsName+"이고,, 상품수량" + this.goodsCount+"입니다.");
System.out.println (this.goodsCount+"상품은 "+ this.sellerName+"이 판매 담당자입니다");
}
void printa(int b, int a){
System.out.println ("상품 이름은"+this.goodsName+"이고,, 상품수량" + this.goodsCount+"입니다.");
System.out.println (this.goodsCount+"상품은 "+ this.sellerName+"이 판매 담당자입니다");
}
}
public class OverridingTest {
public static void main(String[] args) {
Seller seller = new Seller ();
seller.sellerName = "스티븐";
seller.goodsCount = 10;
seller.goodsName = "청소기";
seller.printa();
}
}