Java 생성자

Jinny·2022년 1월 24일
0

TIL

목록 보기
22/28
post-thumbnail

메소드 (Method)

수학의 함수와 비슷하며 호출을 통해 사용한다.
전달 값이 없는 상태로 호출하거나 어떤 값을 전달하여 호출한다.
반환 값 / 결과 값은 있거나 없을 수 있다.

관례적으로 소문자로 작성하고, 메소드 호출할 때 매개변수와 동일한 타입과 개수의 값을 넘겨줘야한다.

💡 [접근제한자] [예약어] 반환형 메소드명( [매개변수] ) { // 기능 정의 }
public void information() {
	System.out.println(studentNo);
}

예약어

  • static
    static 영역에 할당하여 객체 생성 없이 사용
  • final
    종단의 의미, 상속 시 오버라이딩 불가능
  • abstract
    미완성된, 상속하여 오버라이딩으로 완성시켜 사용해야 함
  • synchronized
    동기화 처리, 공유 자원에 한 개의 스레드만 접근 가능함
  • static final(final static)
    static과 final의 의미를 둘 다 가짐

반환형

  • void
    반환형이 없음을 의미, 반환 값이 없을 경우 반드시 작성
  • 기본 자료형
    연산 수행 후 반환 값이 기본 자료형일 경우 사용
  • 배열
    배열의 주소값이 반환
  • 클래스(참조형)
    해당 객체의 주소값이 반환

매개변수

  • ()
    매개변수가 없는 것을 의미
  • 기본 자료형
    기본형 매개변수 사용 시 값을 복사하여 전달
    매개변수 값을 변경하여도 원래 값은 변경되지 않음(깊은 복사)
  • 배열, 클래스
    참조형을 매개변수로 전달 시에는 데이터의 주소 값을 전달하기 때문에 매개변수를 수정하면 원래의 데이터가 수정됨(얕은 복사)
  • 가변인자
    매개변수의 개수를 유동적으로 설정하는 방법
    가변 매개변수 외 다른 매개변수가 있으면 가변 매개변수를 마지막에 설정
    방법 : (자료형 ... 변수명)

메소드 표현식

// 1. 매개변수가 없고 리턴 값이 있을 때
public int infromation() {
	return studentNo;
}

// 2. 매개변수가 없고 리턴 값이 없을 때
public void information() {
	System.out.println(studentNo);
}

// 3. 매개변수가 있고 리턴 값이 있을 때
public String information(String studentName) {
	return studentNo + " " + studentName;
}

// 4. 매개변수가 있고 리턴 값이 없을 때
public void information(String studentName) {
	System.out.println(studentNo + " " + studentName);
}

메소드의 종류

  1. 인스턴스 메소드
    클래스에 소속된 일반 메소드로, 클래스에 대한 객체의 주소(레퍼런스)를 전달받아 해당 주소위치에 있는 객체의 인스턴스 변수 값들을 연산 처리한다.
💡 **정의** : 접근제한자 반환자료형 메소드명 ([자료형 매개변수명, ... ]) **호출** : [자료형 변수명 = ] 레퍼런스.메소드명 ([전달값, ... ])
  1. 클래스 메소드
    클래스 멤버함수 작성 시 메소드 반환자료형 앞에 static 키워드를 사용한 메소드이다. 메소드 호출 시 클래스명을 사용하여 호출한다.
💡 **정의** : 접근제한자 static 반환자료형 메소드명 ([자료형 매개변수명, ... ]) **호출** : [자료형 변수명 = ] 클래스명.메소드명 ([전달값, ... ])

오버로딩

동일한 이름의 메소드를 여러 개 정의해서 사용하는 것
하나의 함수가 마치 여러 일을 하는 것처럼 정의할 수 있기 때문에 다형성이 구현 됨.

  1. 메소드의 이름이 같아야 함
  2. 매개변수의 타입이나 개수를 다르게 정의해야 함
// 매개변수의 형식이 달라야 함
public void func(int num) { ... }
public void func(char ch) { ... }

// 매개변수의 개수가 달라야 함
public void func(int num) { ... }
public void func(int num, int num2) { ... }
  1. 매개변수명은 무관함
  2. 리턴 타입은 무관함

오버로딩 예시

// MethodExam.java
public class MethodExam {
	public void func() {
		System.out.println("1번째 메소드");
	}
	public void func(int num) {
		System.out.println("2번째 메소드");
	}
	public void func(char ch) {
		System.out.println("3번째 메소드");
	}
	public void func(int num1, int num2) {
		System.out.println("4번째 메소드");
	}
}

// Run.java
MethodExam me = new MethodExam();
me.func();
me.func(10);
me.func('A');
me.func(10, 20);

this

모든 인스턴스 메소드에 숨겨진 채 존재하는 레퍼런스로 할당된 객체를 가리킴
함수 실행 시 전달되는 객체의 주소를 자동으로 받음

public class MethodExam {
	public String name = "홍길동";
	
	public void printName() {
		String name = "이길동";
		System.out.println("name : " + name); // name : 이길동
		// 변수명이 필드명과 같은 경우, this 객체 사용
		System.out.println("this.name : " + this.name); // this.name : 홍길동
	}
}

getter / setter

  • setter 메소드
    입력받은 값을 검증한 후 필드에 저장하도록 해주는 메소드
    메소드명은 set+필드 이름으로 지정(첫글자 대문자)
💡 [접근제한자] [예약어] void set 필드명(자료형 변수명) { (this.)필드명 = 변수명; }
public void setStudentNo(int studentNo) {
	this.studentNo = studentNo;
}
  • getter 메소드
    필드의 값을 가공한 후 외부에서 읽을 수 있도록 반환해주는 메소드
    메소드명은 get+필드 이름으로 지정(첫글자 대문자)
    필드타입이 boolean일 경우 is+필드 이름으로 지정(첫글자 대문자)
💡 [접근제한자] [예약어] 반환형 get필드명() { return 필드명; }
public int getStudentNo() {
	return studentNo;
}

getter / setter 메소드 예시

public class Member {
	public String name;
	public int age;

	public String getName() {
		return name;
	}
	void setName(String name) {
		this.name = name; // this.name : 필드에 있는 name / name : setName의 변수
	}
	public int getAge() {
		return age;
	}
	private void setAge(int age) {
		this.age = age;
	}
}
profile
코린이

0개의 댓글