중복 메소드 (Overloading)

Coding/JAVA 2018. 10. 17. 20:17

메소드 오버로딩 (method overloading)

오버로딩이란 같은 이름의 메소드를 중복하여 정의하는 것을 의미한다.

자바에서는 원래 같은 이름의 메소드를 둘 이상 가질 수 없다.


하지만 매개변수의 갯수와 타입이다르다면 작성할 수 있다.

시그니처 (메소드의 유니크함)가 다르다면 여러개의 메소드를 정의할 수 있다.


이 메소드 오버로딩은 객체 지향 프로그래밍의 특징 중 하나인 다형성을 구현하는 방법 중 하나이다.


오버로딩을 위해서는 2가지의 조건이 필요하다.


1. 메소드의 이름이 같아야 한다.

2. 메소드의 시그니처가 달라야 한다.


어떤 메소드를 구현할 때 들어오는 매개변수에 따라 다르게 동작하고 싶을 때 이용하면 용이하다.


예제를 통해 개념을 확실히 하자.


class MethodOverloading {

    static void show(int number1) { System.out.println(number1); }

    static void show(int number1int number2) { System.out.println(number1 * number2); }

    static void show(int number1double number2) { System.out.println(number1 + number2); }

}

 

public class MainClass {

    public static void main(String[] args) {

        MethodOberloading myfunc = new MethodOberloading();

 

        myfunc.show(10);

        myfunc.show(1020);

        myfunc.show(103.14);

        myfunc.show(10'a');

    }

}


결과

10

200

13.14

970 ('a' == 97)


더 자세한 내용은 extends 와 implements의 차이로 알아보자


posted by M1zz

singleton 및 디자인 공부하기

Coding/JAVA 2018. 6. 21. 17:56


posted by M1zz

Generic, wildcard 공부하기

Coding/JAVA 2018. 6. 21. 17:56


posted by M1zz

Static , Final 공부하기

Coding/JAVA 2018. 6. 21. 17:55


posted by M1zz

자료구조 List와 Map 에관하여 정리

Coding/JAVA 2018. 6. 21. 17:54


posted by M1zz

private > default > protected > pubic 순으로 보다 많은 접근을 허용한다


private 이 붙어있다면, 해당 클래스에서만 접근이 가능하다.


public class AccessModifier { private String secret; private String getSecret() { return this.secret; } }


default 는 별도의 설정이 없을 때 이고, 해당 패키지 내에서만 접근이 가능하다


package jump2java.house; public class HouseKim { String lastname = "kim"; }


package jump2java.house; public class HousePark { String lastname = "park"; public static void main(String[] args) { HouseKim kim = new HouseKim(); System.out.println(kim.lastname); } }


protected 가 붙어있다면 메소드는 동일 패키지내의 클래스, 해당 클래스를 상송박은 외부 패키지의 클래스에서 접근 가능


package jump2java.house; public class HousePark { protected String lastname = "park"; }


package jump2java.house.person; import house.HousePark; public class EungYongPark extends HousePark { public static void main(String[] args) { EungYongPark eyp = new EungYongPark(); System.out.println(eyp.lastname); } }


public 이 붙어있다면 어떤 클래스에서라도 접근이 가능하다.


package jump2java.house; public class HousePark { protected String lastname = "park"; public String info = "this is public message."; }



static 키워드는 전역, 전적의 의미로 통용된다. 

변수에 사용되면 모든 해당 클래스는 같은 메모리를 공유한다.

특정한 인스턴스에 종속되지 않으며, 인스턴스를 만들지 않고도 사용가능하다.


static 메소드는 클래스 메소드라고도 부른다. 오버리이드가 불가능하고, 상속클래스에서 보이지 않는다.



final 키워드는 변수에 상수처럼 변하지 않는 값을 대입할 때 사용된다. 

대입연산자를 통해 한 번만 초기화가 가능하며, 상수를 만들 때 유용하다.

final 메소드는 오버라이드 하거나 숨길 수 없는 메소드이고,

클래스는 상속할 수 없는 클래스를 의미한다. 의미 그대로 상속 계층에서 마지막 클래스이다.


하지만 final의 정의가 상수는 아니다. 한번만 초기화 가능한 것이기 때문에 클래스 별로 다른 value의 값을 가질것 이다.

value의 값을 특정 값이라고 말할 수 없다.


public class Test {
  private final int value;

  public Test(int value) {
    this.value = value;
  }

  public int getValue() {
    return value;
  }
}

static final 을 관례처럼 사용하는 이유는 - 변수의 그 의미와 용도를 고정시키겠다는 뜻이다.

어떤 변하지 않는 값을 만든다는 것은 어디에서나 그 값을 이용할 수 있도록 효율을 위한 약속의 뜻이다.



참고 : https://wikidocs.net/232

참고 : https://djkeh.github.io/articles/Why-should-final-member-variables-be-conventionally-static-in-Java-kor/

'Coding > JAVA' 카테고리의 다른 글

중복 메소드 (Overloading)  (0) 2018.10.17
singleton 및 디자인 공부하기  (0) 2018.06.21
Generic, wildcard 공부하기  (0) 2018.06.21
Static , Final 공부하기  (0) 2018.06.21
자료구조 List와 Map 에관하여 정리  (0) 2018.06.21
posted by M1zz