TIL

이우진·2023년 7월 25일

매개변수 생성자
사용되는 기술,변수 : 매개변수,Over loading(오버로딩),this
매개변수: 생성자나 매서드 호출 시 ()안에 작성되어
전달되어지는 값을 저장하는 변수
-> 전달 받은 값을 저장하고있는 매개체(지니고있는)역할의 변수

public User(String userId,String userPw) {

	System.out.println("매개변수 생성자를 이용해서 User 객체 생성");
	System.out.println(userId + "/"+userPw);
	
	this.userId = userId;
	this.userPw = userPw;

//필드 = 매개변수

매개변수로 전달받은 값을 필드에 초기화(this 참조 변수)
this 참조변수

  • 객체가 자기 자신을 참조할 수 있도록 하는 변수
  • 모든 객체 내부에 숨겨져있다.
    //왜 사용?
    -> 필드명과 매개변수명이 같을 경우 이를 구분하기 위해서 사용한다 //필드를 전부 초기화 하는 목적의 매개변수 생성자
    public User(String userId, String userPw, String usrName,
    int userAge, char userGender) {
    //System.out.println(); // this()생성자
    같은 클래스의 다른 생성자를 호출할 때 사용
    생성자 내에서 반드시 첫번째 줄에 작성되어야한다! 위에 다른코드쓰면 에러
    ->생성자 호출은 반드시 첫번째 줄에 작성해야만 한다!
    // 왜 사용하는가?
    중복 코드 제거,코드 길이 감소,재사용성 증가
    가독성이 좀 어려운 경우가 생길 수 있어서 많이 사용되지 않음

//자바는 기본적으로 필드명,생성자명,변수명의 중복을 허용하지 않음.

//오버로딩 (Over loding)
-클래스 내에 동일한 이름의 메서드 (생성자도 포함)를 여러개 작성하는 기법
->하나의 이름으로 여러 기능을 수핼할 수있게 하는것
[오버로딩 조건]
1) 메서드의 이름이 동일
2) 매개변수의 개수,타입,순서 중 1개라도 달라야 함.
public User(String userId) {} //매개변수의 개수 같은 생성자 없음
//오버로딩 성립

public User(int userAge) {} // 매개변수의 개수는 같지만 타입이 다름
                            // 오버로딩 성립

public User(String userId, int userAge) {}
// 매개변수의 개수와 동일한것은 있으나 하나의 타입이 다름 

public User(int userAge,String userId) {}
// 매개변수의 개수,타입은 같지만 순서가 다름

//public User(int userAge,String userName) {}
// 매개변수의 개수,타입,순서가 모두 같아서 오버로딩 불가
// -> 변수명은 신경쓰지 않는다!

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

this 사용 예시

public class Academy{
private String name;
public Academy(){}
public Academy(String name){this.name = name;}

위와 같이 매개변수를 가지고 생성자에서 매개변수 명이 필드명과 같은 경우
매개변수의 변수명이 우선이므로 this 객체를 이용하여 대입되는 변수가 필드라는 것을 구분해줌

this():this 생성자

this()란?
생성자,같은 클래스의 다른 생성자를 호출할 때 사용,반드시 첫 번째 줄에 선언해야 함

thi() 사용 예시

public class Academy{

   private int age;
   
   private String name;
   
   public Academy() { this(20,"김철수");}
   
   public Academy(int age,String name) {
          this.age = age;    this.name = name;
   }
   

메소드(method)
메소드란?
수학의 함수와 비슷하며 호출을 통해 사용,전달 값이 없는 상태로 호출을 하거나
어떤 값을 전달하여 호출을 하며,함수 내에 작성된 연산 수행
수행후 반환 값/결과 값은 있거나 없을 수 있음

메소드 표현식
[접근제하자[예약어]반환형 메소드명([매개변수]){
//기능 정의
}

public void information() {
System.out.println(studentNo);
}

메소드 접근제한자

  • :public
    #:protected
    ~: (default)
    -: private

메소드 예약어

static : static 영역에 할당하여 객체 생성 없이 사용

final : 중단의 의미,상속 시 오버라이딩 불가능

abstract:미완성된,상속하여 오버라이딩으로 완성시켜 사용해야 함

synchroniozed : 동기화 처리,공유 자원에 한 개의 스레드만 접근 가능함

static final : static과 final의 의미를 둘 다 가짐

메소드 반환형

void : 반환형이 없음을 의미,반환 값이 없을 경우 반드시 작성
기본자료형: 연산 수행 후 반환 값이 기본 자료형일 경우 사용

배열: 연산 수행후 반환값이 배열인 경우 배열의 주소값이 반환

클래스: 연산 수행후 반환 값이 해당 클래스 타입의 객체일 경우
해당 객체의 주소값이 반환(클래스==타입)

메소드 매개변수

() : 매개변수가 없는 것을 의미

기본 자료형 : 기본형 매개변수 사용 시 값을 복사하여 전달
매개변수 값을 변경하여도 본래 값은 변경되지 않음

배열 : 배열,클래스 등 참조형을 매개변수로 전달 시에는 데이터의 주소 값을
클래스 : 전달하기 떄문에 매개변수를 수정하면 본래의 데이터가 수정됨(얕은 복사)

가변인자: 매개변수의 개수를 유동적으로 설정하는 방법으로
가변 매개변수 외 다른 매개변수가 있으면 가변 매개변수를 마지막에 설정
*방법(자료형...변수명)

  • 매개변수의 수에 제한이 없다.

setter메소드
필드에 변경할 값을 전달 받아서 필드 값을 변경하는 메소드

getter메소드
필드에 기록된 값을 읽어서 요청한 쪽으로 읽은 값을 넘기는 메소드

return
해당 메소드를 종료하고 자신을 호출한 메소드로 돌아가는 예약어
반환 값이 잇다면 반환 값을 가지고 자신을 호출한 메소드로 돌아감

profile
이우진

1개의 댓글

comment-user-thumbnail
2023년 7월 25일

좋은 글 감사합니다. 자주 올게요 :)

답글 달기