수업노트 - 클래스, 메소드, 오버로딩, 접근제한자, 생성자

sanchez9·2023년 6월 19일
0

JAVA 수업노트

목록 보기
6/16

- 멤버(매서드)

//선언부
접근지정자(접근제한자) 반환타입 매서드명(입력인자){
				//처리문,실행문,구현문
				return 반환값;    //반환값이 없으면 생략
}
  • 일하는~, 기능
  • 반환값이 없으면 생략
  • 반환 값과 반환타입은 반드시 타입이 일치해야한다.
  • 매서드는 return문을 만나면 매서드를 종료
//선언부
public void instanceMethod(String name){ //인스턴스 매서드
				//구현부
				System.out.prinln(name+"인스턴스 매서드2");
}
  • 반환타입: return값과 타입이 같아야함(모든 매서드는 반환값이 있어야함)

    • void→return; // 생략, void는 return값이 없다는 뜻
  • 매서드를 호출한 곳에 return값이 반환된다. void만 실행하면 됨

  • static 매서드는 static 멤버만 접근 가능 → static멤버(클래스멤버)

  • non-static 매서드 : static 멤버도 접근 가능

  • 지역변수(logical) : 매서드 안에서 선언된 변수, 매개변수

    • 매서드가 생성되면 반드시 초기화해야한다
    • 매서드와 생성과 종료 시기가 같다.
    • 스택메모리에 저장
  • 인스턴스멤버 : 클래스 내부의 변수 → 인스턴스를 생성한 후 접근 가능

  • 클래스멤버 : 인스턴스를 생성하지 않아도 접근 가능

  • 지역변수(메소드 안에 선언) : 메소드 안의 변수

  • 지역변수(매개인자) : 메소드 매개인자

  • 객체 참조 변수 : 객체(인스턴스)의 주소값을 저장

  • 상수 : 수식에서 변하지 않는 값

    상수의 선언
    final 상수타입 상수명;
    final static int MAN;
  • 매서드 오버로딩

    • 기본적으로 자바에서는 동일한 이름의 매서드를 허용하지 않는다.

    • 예외적으로 매서드 이름이 같은 것을 허용한다

    • 매서드의 선언부에서 매서드 명이 똑같다

    • 매서드의 매개인자 유행이 다른 매서드

    • 매서드의 매개인자 갯수가 다른 매서드

      public void method1(){
      }
      public void method1(int num1){
      }
      public void method1(int num1, String name){
      }
      public void method1(String name, int num1){
      }
    • System.out.print도 역시 매서드 오버로딩이 가능한 매서드의 일종.

  • 접근제한자(Modify) = 접근지정자

    • 클래스

      • public : 모든 패키지 클래스에서 접근
      • default(생략) : package-private 같은 패키지 내의 클래스만 접근
      • private : 내부클래스, 싱글톤(디자인패턴)
    • 멤버(클래스 내부)
      - public : 다른 패키지
      - private : 같은 클래스 내에서만 사용가능 → 캡슐화 → 보안, 보호, DB관련 DTO, Entity
      - protected : 상속관계, 같은 패키지
      - default : 같은 패키지

      ㅤ같은패키지ㅤㅤ다른패키지ㅤㅤㅤ상속ㅤㅤㅤ같은클래스ㅤ
      publicOOOO
      protectedOXOO
      default(생략)OXXO
      privateXXXO
  • 생성자(constructor)

    • 매서드이다. (클래스 이름과 똑같은 매서드)***
    • 반환타입이 void이다 (그렇기에 생략가능 → public 클래스(){})***
    • 객체를 생성할 때 도움을 주기 위한 매서드***
    • 컴파일러가 자동으로 생성해준다(기본생성자)***
      • 기본생성자만 있을 경우 생략이 가능 → 자동으로 생략(처음 클래스 만들 때)
      • 다른 생성자를 생성했으면 기본생성자 자동 생성 안됨
    • 다른 생성자를 생성할 시 기본생성자는 자동으로 생성하지 않는다
      • 기본생성자도 같이 사용하려면 기본생성자를 직접 생성해 주어야 한다.
    • 오버로딩을 허용
    • 다른 생성자를 호출 시 반드시 생성자의 첫번째 줄에서 호출한다 (거의 사용하지 않음)
      • ex) this(), this(인자), this(인자, 인자) ← 얘랑 같이 써야함 첫번째 줄에
  • this()

    • 같은 클래스의 다른 생성자 호출
    • 생성자 내에서만 사용
    • 생성자 첫번째 줄에서 호출
    • this.맴버; //
    • this.필드; // 필드
    • this.매서드명(); // 매서드
    • this(); // 기본생성자
    • this(int a); // 매개변수가 있는 생성자
  • 캡슐화

    • 대부분의 DB 관련 멤버는 private → 필드
    • private 필드를 외부에서 접근 가능하게 하는 매서드★ = private - 보안, 보호 목적
    • this → 객체의 멤버(필드, 매서드)
      • this → 객체자신
      • this. → 멤버에 접근
    • setter
      • private 필드를 외부에서 초기화

        public void setUserID(String userID){
        				this.userID=userID;
        }
    • getter
      • private 필드를 외부에서 호출

        public String getUserID(){
        				return this.userID;
        }
        public void set~
      • lombok.jar → spring 에서 사용(private)

    • set~ 설정 → 가입, 추가 insert
    • get~ 호출 → 조회 select
profile
자바를 배우고 있어요

0개의 댓글