국비/Java

[09-1] 객체 - 메소드, 오버로딩(overloading)

제발 취업하게 해주세요 2022. 4. 19. 20:09
static 메소드
static메소드 호출

static : 객체를 생성하지 않아도 호출이 가능하다!

[표현법] 클래스이름.메소드이름();
             ex) Math.random();
public class MethodTest2 {
	// static 메소드 만들기
	
	//1
	public static void method1() {
		System.out.println("매개변수와 반환값이 둘 다 없는 메소드입니다.");
	}
	
	//2
	public static String method2() {
		return "매개변수는 없지만 반환값은 있는 메소드입니다.";
	}
	
	//3
	public static void method3(String name, int age) {
		System.out.println("매개변수는 있고 반환값은 없는 메소드입니다.");
		System.out.println("출력구문 : " + name + "님 " + age + "살");
	}
	
	//4
	public static String method4(String name, int age) {
		System.out.println("매개변수와 반환값 둘 다 있는 메소드입니다.");
		return name + "님 안녕하세요 " + age + "살 이시네요.";
	}
    
    
    
    -------------------------------------------------------------------
    public class Run {
	public static void main(String[] args) {
	MethodTest2.method1();
		MethodTest2.method2();		
		MethodTest2.method3("박머루", 29);		
		MethodTest2.method4("박머루", 29);
        }
메소드 오버로딩 Overloading
- 한 클래스 안에 같은 메소드명으로 여러 메소드를 정의 할 수 있는 방법
- 매개변수 자료형의 갯수, 순서, 종류가 모두 다르게 작성되어야 한다
- 단, 매개변수명, 접근제한자, 반환형은 메소드 오버로딩에 영향을 주지 않는다.

// 메소드 이름은 test로 통일
public void test() {
System.out.println("안녕하세요");
System.out.println("오늘 수업 5분 남았어여^^");
}
public void test(int a) {
System.out.println("int a 하나만 받았어요");
}
public void test(int a, String s) {
System.out.println("int a 먼저, String s 두번째로 받았어요ㅗ");
}
public void test(String s, int a) {
System.out.println("String s 먼저, int a 두번째로 받았어요!~!~!~!");
}
public void test(int a, int b) {
System.out.println("int a, int b 받았어여");
}

/* 주의 : 정수형 두 개를 받는 test를 하나 더 만든다면?
 * 매개변수의 이름이랑은 상관 없이 자료형의 개수, 순서가 같기 때문에 에러가 발생한다
 * - 즉! 매개변수 자료형이 갯수와 순서가 항상 다르게 작성되어야만 한다
 * 같은 자료형끼리 순서 바꿔주는 건 의미가 없음
public void test(int b, int a) {

}*/

public void test(int a, int b, String s) {
System.out.println("int a int b String s");
}

/*
 * 반환형이 다르다고 오버로딩이 적용되지 않는다
 * 메소드를 호출하는 시점에서 매개변수가 동일하면 무조건 에러가 발생한다
 * 반환형과 상관없이 매개변수의 자료형의 갯수와 순서가 다르게 작성되어야 한다.
 */
/* public int test(int a, int b, String s) {

}*/

접근제한자 : public protective default private
접근제한자가 다르다고 오버로딩이 적용되지 않는다!1 오버로딩과 무관
접근제한자와는 상관 없이 매개변수와 자료형의 개수, 순서는 다르게 작성되어야 한다.

더보기

~~~220419 일기~~~

 

오늘은 개강하고 첫 테스트 보는 날!

결과는 좋았지만 첫 테스트라 문제가 쉬웠고 반 평균이 높아 다음부터는 어렵게 출제한다고 해서 벌써 걱정이다..

분명 아는 건데 이걸 서술형으로 어떻게 설명해야하나 글 쓰는 게 어려워서 고통스러웠다.

그냥 가볍게 보고 넘겼던 개념들까지도 툭 치면 나오도록 복습 꼼꼼하게 잘 해야겠다ㅜㅜ

평가를 본다는 것이 부담스러웠던 것 말고는 진도 조금 나가고 자습으로 실습문제 풀어 볼 시간 넉넉하게 줘서 행복했던 하루였다.

속도는 느리지만 수업 듣는 것 보다 실습문제 혼자 풀어보는 게 아직까지는 더 재밌다ㅎㅎ

내일부터 또 진도 빡세게 나갈테니 오늘은 일찍 정리하고 자야지...