한 클래스파일 안에는 같은 메서드가 중복 될 수 없다.
메서드 Overloading
public static void main(String[] args) {
int i =plus(3,5,10);
float j = plus(0.1f,0.2f);
double k =plus(1.1,2.2);
System.out.println("int합:"+i);
System.out.println("float합:"+j);
System.out.println("double합:"+k);
}
static int plus(int x,int y, int z) {
return x+y+z;
}
static float plus(float x,float y) {
return x+y;
}
static double plus(double x,double y) {
return x+y;
}
위의 3가지 메서드는 이름이 같지만 매개변수가
서로 다르므로 중복 된다고 할 수 없다.
위와 같은 상황을 메서드 오버로딩이라고 한다.
하나의 메서드 이름으로 여러개의 메서드를
만들 수 있게 해주는 기법이다.
중복 메서드, 다중 정의라고도 한다.
오버로딩의 조건은
메서드의 이름이 같아야하고
매개변수의 개수와 자료형(타입)이 달라야한다.
변수명의 차이는 상관이 없다.
setter_getter
하나의 파일에는 꼭 한개 이상의 클래스가 있어야한다.
다른 클래스에 있는 변수를 리턴할 땐
선언을 먼저 해주고 리턴을 해야하지만
다른 클래스에 메서드를 만들땐
변수명만 입력해주면 된다. (선언을 할 필요가 없다.)
private
변수 앞에 private이 붙는 경우엔
해당 변수가 있는 클래스 외에는 접근을 할 수 없다.
때문에 변수 초기화와 리턴값을 받기 위해선
해당 클래스에 메소드를 만들고
그를 통해 초기화와 리턴을 받을 수 있다.
void setTitle(String t) { //setter 메서드
title = t;
}
String getTitle() { //getter 메서드
return title;
}
title이란 변수가 private인 경우 해당 클래스에
setter,getter메서드로만 접근할 수 있다.
setter 메소드의 형태는 리턴 타입은 없고
매개변수가 있고
getter 메소드는 리턴 타입이 있고 매개변수가 없다.
생성자(Constructor)
생성자는 메서드다.
리턴 타입이 없다(void도 쓰지 않는다.)
생성자의 이름은 클래스 이름과 같다.(대소문자까지 같다.)
객체의 메모리가 생성되면 자동으로 호출된다.
생성자를 정의하지 않으면 기본생성자(default 생성자)가
하나 자동으로 생성된다.
멤버 변수의 초기화 작업을 주로 담당한다.
class Member{
private String id;
private String passwd;
Member(){ //생성자 메소드 정의
System.out.println("Member 생성자");
id="park";
passwd="1234";
}
Member(String i,String p){ //생성자 오버로딩
System.out.println("Member(String i,String p)");
id=i;
passwd=p;
}
위와 같이 같은 생성자를 만드는데 매개변수를 바꿔주어
오버로딩을 시킬 수 있다.
클래스를 호출할때
Member m1 = new Member();
Member m2= new Member("choi","7777");
위와 같이 다르게 호출하면 그에 맞는 생성자가 호출된다.
객체배열
Class는 자신이 만든 데이터 타입이다.
그러므로 배열로도 만들 수 있다.
클래스명[ ] 배열명={new 배열명( ),...};
혹은
클래스명[ ] 배열명= new 클래스명[만들 숫자];
클래스명[0] = new 클래스명
클래스명[1] = new 클래스명
클래스명[2] = new 클래스명
로 만들 수 있다.
'Develop > JAVA' 카테고리의 다른 글
0526 JAVA 여덟번째 (0) | 2022.06.01 |
---|---|
0525 JAVA 일곱번째 (0) | 2022.06.01 |
0523 JAVA 다섯번째 (0) | 2022.06.01 |
0520 JAVA 네번째 공부! (0) | 2022.06.01 |
0519 JAVA 세번째 공부 정리 (0) | 2022.06.01 |