package kr.co.kihd.staticnonstatic;
    
    class A {
    	int data1 = 10;
    	int data2 = 20;
    }
    
    public class AccumulatorTest {
    
    	public static void main(String[] args) {
    		
    		Accumulator accu = new Accumulator();
    		int iResult = accu.add(10, 50);
    		System.out.println("iResult : "+iResult);
    		
    		//접미사 반드시 붙이도록 함.
    		long lResult = accu.add(10, 50323L);
    		System.out.println("lResult : "+lResult);
    		
    		lResult = accu.add(50423L, 10);
    		System.out.println("lResult : "+lResult);
    		
    		lResult = accu.add(50423L, 10L);
    		System.out.println("lResult : "+lResult);
    		
    		double dResult = accu.add(50.2, 10.3);
    		System.out.println("dResult : "+dResult);
    		
    		lResult = accu.add(new int[] {1,2,3,4,5});
    		System.out.println("lResult : "+lResult);
    		
    		iResult = accu.add(new A());
    		System.out.println("iResult : "+iResult);
    		
    		int result1 = accu.divide(10, 20);
    		double result2 = accu.divide(10.0, 4.0);
    		System.out.print(result1+result2);
    	}
    
    }
    

     

    package kr.co.kihd.staticnonstatic;
    
    // 메서드 오버로딩(method overloading) : 한 클래스내에 같은 이름을 가지는
    // 메서드를 여러 개 정의하는 것이다. 
    public class Accumulator {
    	
    	//add라는 메서드명으로 오버로딩함
    	public int add(int x, int y) {
    		System.out.println("add(int x, int y)");
    		return x + y;
    	}
    //	public int add(int a, int b) {
    //		System.out.println("add(int x, int y)");
    //		return a + b;
    //	}
    	public long add(int x, long y) {
    		System.out.println("add(int x, long y)");
    		return x + y;
    	}
    	
    	public long add(long x, int y) {
    		System.out.println("add(long x, int y)");
    		return x + y;
    	}
    	
    	public long add(long x, long y) {
    		System.out.println("add(long x, long y)");
    		return x + y;
    	}
    	
    	public double add(double x, double y) {
    		System.out.println("add(long x, long y)");
    		return x + y;
    	}
    	
    	//참조형 변수를 받아서 오버로딩하는 케이스
    	public long add(int[] arr) {
    		System.out.println("add(int[] arr) : "
    				+ "배열의 주소를 받아서 그 값의 총합을 구해서 리턴하고 있는 메서드");
    		long sum = 0L;
    		for(int i : arr) {
    			sum += i;		
    		}
    		return sum;
    	}
    	
    	//클래스를 매개변수로 받아서 오버로딩하는 케이스
    	public int add(A a) {
    		System.out.println("add(A a)");
    		return a.data1 + a.data2;
    		
    	}
    	public int divide(int amount, int number) {
    		return amount / number;
    		
    	}
    	//실수형 오버로딩
    	public double divide(double amount, double number) {
    		return amount / number;
    	}
    	
    }
    
    
    
    
    
    
    
    
    
    
    
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기
    loading