[Eclipse] 메소드, 생성자

2021. 6. 21. 15:06JAVA

* 메소드(Method)

 

-클래스 내에 기능 역할

-변수, 조건문, 반복문, 출력, 실행문 등 사용

-사용방법 :

    출력타입(반환타입) 메소드명(입력변수-개수,타입 상관X(기본타입,참조타입[배열,String])) {

                  실행문

                // 중괄호 안에서 동작

}

 

//메소드 사용방법

예) 출력타입 없는 메소드
void m1(int a){ 
	//return없음
}	
		  	
            
예2) 출력타입이 int, 입력이 두개(int, String)
int m2(int  a, String b){
	//출력타입 있으면 return필수
	//return : int타입의 변수
}
		
        
예3) 출력타입이 String, 입력이 하나(배열)
String m3(int[] arr){ 
	//return  "String타입의 변수"
	String s = "";
	return s;
}
//메소드 활용방법

public class MethodClass {
	String str = "전역변수";
	
    public static void main(String[] args) {
    
    
    }
    
    
    
    //반환이 없고, 입력이 있는 메소드
    void method1() {
		System.out.println("method1 출력");
		int a = 0, b = 0;
		int sum = a+b;	
        //메소드 내에서 계산이 끝나는 실행문
		str = "method1에서 전역변수 수정";
	}
    
    //반환이 없고, 입력이 있는 메소드
	void method2(String s) {
		//입력을 받아서 처리(출력, 연산)할 때 사용
		System.out.println(s + "문자값 입력");		//입력받아 출력
		s = "수정된 문자값";		//입력값을 수정
	}
    
    
    //반환, 입력 모두 있는 메소드
    String method3(int a, String s, int[]arr) {
		arr[0] = a;
		for(int i = 0; i<10; i++) {
			System.out.println(i);
		}
		String result = s+a;
		return result;
		
	}
    
    
    //반환이 있고, 입력이 없는 메소드
	int[] method4() {
		int[] result = new int[5];
		result[0] = 1;
		result[1] = 2;
		
		return result;
	}
    
//메소드 활용예시

public class MethodClass2 {
	public static void main(String[] args) {
		
        //같은 클래스의 객체 생성
		MethodClass2 mc2 = new MethodClass2();
		
        //같은 클래스에 있는 메소드 호출
		mc2.printOneOfTen();
		mc2.printOneOfTen2(2,10);
		
		//inputSum 반환타입이 int이기 때문에 그 값을 넣는 변수도 int여야됨
		int sum = mc2.inputSum(1, 20);	//1~20까지의 숫자
		
		System.out.println(sum);
	}
    
    
	//1~10까지 출력하는 메소드
	void printOneOfTen() {
		for(int i = 0; i<=10; i++) {
			System.out.print(i + " ");
		}
		//같은 클래스 내에서 메소드 호출방법 (메소드 이름만 적는다)
		printEnter();
	}
    
	
	//start~end까지 출력
	void printOneOfTen2(int start, int end) {
		//start = 2; end = 10;
		for(int i = start; i < end; i++) {
			System.out.print(i + " ");
		}
		printEnter();
	}
	
    
	//한줄 내려쓰고 "---------------"구분해주는 메소드
	void printEnter() {
		System.out.println("\n-------------------------");
	}
	
	//start~end 합계 값을 반혼해주는 메소드
	int inputSum(int start, int end) {
		int sum = 0;
		for(int i = start; i < end; i++) {
			sum+=i;
		}
		return sum;
	}
	
}

 


 

*return문

 

* 메소드가 정상적으로 종료되는 경우

1. 메소드의 블럭{}의 끝에 도달했을 때 

2. 메소드의 블럭{}을 수행 도중 return문을 만났을 때

 

*return문

- 리턴 타입은 기본형, 참조형이 올 수 있다. 

- 현재 실행 중인 메소드를 종료하고 반환값을 가지고 호출한 메소드로 되돌아간다.

 

1. 반환값이 없는 경우 : return 필요없음

2. 반환값이 있는 경우 : return 뒤에 반환값을 지정해줘야 됨

 

 


 

*생성자

 

- 리턴 값이 없다. (하지만 void를 쓰지 않는다.) 

- 클래스가 실행될 때 딱 한번 실행된다.

- 생성자의 이름은 클래스의 이름과 같아야 한다.

- 클래스에 생성자가 하나도 없으면 컴파일러가 기본 생성자를 추가한다.

- 모든 클래스에는 반드시 하나 이상의 생성자가 있어야 한다.

- 매개변수는 개수, 타입 상관없이 가능하다.

- 생성자는 여러개를 만들 수 있다.(입력변수의 개수나 타입이 다른 경우)

 

 

public class Car(){
	int carVar;
    
    //생성자(클래스 객체화시 초기화)
    Car(){
    //실행문;
    }
    
    //메소드(기능)
   
    void carMethod(){
    	//실행문;
      
    }
}

 

//ConstructorClass 클래스
public class ConstructorClass {
	//생성자 사용
	ConstructorClass(){	//클래스명과 동일
		System.out.println("ConstructorClass 객체화진행");
	}
    
    //매개변수 3개를 받은 생성자
	ConstructorClass(String s, int a, char c){
		System.out.println("s: " + s);
		System.out.println("a: " + a);
		System.out.println("c: " + c);
	}
}

---------------------------------------------------------------------------


//ConstructorMain 클래스
public class ConstructorMain {

	public static void main(String[] args) {
		ConstructorClass cc = new ConstructorClass();
//		   클래스명		변수명		     ㄴ>생성자
		ConstructorClass cc1 = new ConstructorClass("문자값",10,'a');

	}

}

//결과
ConstructorClass 객체화진행
s: 문자값
a: 10
c: a

 

* this()

- 인스턴스 자신을 가리키는 참조변수. 인스턴스의 주소가 저장되어있음
- 인스턴스변수와 지역변수를 구별하기 위해 참조변수 this사용
- 모든 인스턴스 메서드에 지역변수로 숨겨진 채로 존재

 

 

 

'JAVA' 카테고리의 다른 글

[Eclipse] 객체지향개념(static, final, 접근제어자, getter, setter)  (2) 2021.06.22
[Eclipse] 메소드 오버로딩  (0) 2021.06.21
[Eclipse] 1차원배열 예제  (0) 2021.06.18
[Eclipse] for문 예제  (0) 2021.06.18
[Eclipse] 배열(Array)  (0) 2021.06.17