같은 이름의 메소드를 중복해서 정의
메소드의 이름은 같지만 파라미터 타입이나 갯수가 달라야한다.
예)
객체 자신을 의미
개체자신의 메모리 주소값.
예)
this.id=id는 Member객체의 id속성 = id (파라미터)이고 멤버 객체 속성의 값을 입력
Member 클래스 객체를 생성하고 메소드를 입력해주면 입력된 파라미터가 출력된다.
인스턴스(객체)가 3개 만들어진것이 아니라 Member객체를 참조할 수 있는 참조변수가 배열로 3개 생성된것이다.
static 메소드
일반 멤버 메소드는 객체를 생성한 후에 사용할 수 있지만, static메소드는 객체 생성없이 클래스명으로 호출해서 사용한다.
this는 사용할 수 없다.
Math1 mm =new Math1();
int n=mm.add(100, 200); -> 위에 메소드에서 static을 쓰지않아서 객체를 생성해줘야한다.
int aaa=Math1.gg(-100);
System.out.println(aaa); ->위에서 static 쓰였다.
static은 서로 독립적이기 때문에 서로 다른값을 가지며 객체들이 공통적으로 같은 값이 유지되는경우 static을 붙인다.
메서드중에서 인스턴스 변수를 사용하지 않는 메서드에는 static을 붙여주는것이 좋다.
인스턴스 변수는 객체의 수 만큼 생성되지만 static멤버 변수는 객체의 수와 상관없이 하나만 생성되어 모든 객체가 공유한다.
인스턴스 변수는 객체를 new로 생성하는 순간에 만들어지지만 static멤버변수는 new로 생성하지 않아도 클래스가 로딩되는 순간에 생성된다.
예)
멤버 변수에 static 붙어있어 b의 값을 공유한다.
그래서 a는 a++이 붙어있음에도 클래스명으로 선언해주지 않아서 값은 1이되지만 b는 클래스명으로 사용하고 b++이 되어서 3이된다.
숫자를 고정시킨다.
대문자로 선언한다.
파이같은 경우 3.14592....인데 이 값을 고정시켜 실수를 방지 하며, final이 선언된 값은 고정되므로 a=200 처럼 변경하지못한다. 또한 자바 클래스 Math.PI를 사용하면 파이값을 알수 있고 PI이렇게 대문자로 되어있으면 final이라는것을 예측할 수 있다.