728x90

1. 메소드 오버로딩

  • 같은 이름의 메소드를 여러 번 선언
  • 매개변수의 타입이나, 개수가 달라야 한다.
  • 매번 메소드를 호출할 때마다 값을 넣어주지 않고 고정 하고 싶다면 info(값) 처럼 작성할 수 있음
void info(String manufacture, int capacity){
    System.out.println("휴대폰 제조사는 " + manufacture + " 입니다");
    System.out.println("휴대폰 용량은 " + capacity + "GB 입니다");
}

void info(){
    info("애플", 256); // 위의 info 메소드 호출
}

 

2. 클래스 메소드

static void serviceCenter(){
    System.out.println("서비스 센터의 전화번호는 02-1234-1234 입니다");
}

// 사용법
클래스이름.메소드이름(); // 호출 가능
  • static이 붙지 않은 메소드는 객체마다 서로 다른 동작을 한다.(인스턴스 변수의 값이 다르기 때문에)
  • static이 붙은 클래스 메소드는 항상 같은 동작만 한다.
  • 객체를 생성하지 않더라도 호출할 수 있다.
  • 메소드 내에서 인스턴스 변수가 사용되지 않을 경우,
  • 전달 받은 값만 처리하고 반환하려고 할때  클래스 메소드를 사용한다.

 

3. This

public class Phone {
    String name;

    void phoneInfo(String name){
        this.name += name;
    }
}

public static void main(String[] args){
	Phone phone = new Phone();
	phone.name = "아이폰14Pro";
	phone.phonInfo(" 2023년형");
}

// 출력 결과 ==> 아이폰14Pro 2023년형
  • 객체, 자기 자신을 나타낸다
  • this.name은 클래스 인스턴스 변수로 선언된 name을 말한다.
  • name은 전달 값으로 전달 받은 String name을 나타낸다.

 

4. 생성자(Constructor)

  • new연산자를 통해 인스턴스가 생성될 때 호출되고 제일 먼저 실행되는 메서드
  • 인스턴스 변수를 초기화 시키는 역할을 한다.
  • new 연산자가 인스턴스 생성 하는 것 (생성자가 인스턴스 생성하는 것은 아님!)
  • 생성자가 정의 되어 있지 않을 경우 컴파일러가 알아서 기본 생성자를 추가해서 컴파일 한다.
// 클래스이름(){}
Phone(){ // 기본 생성자

}

// 클래스이름(매개변수){}
Phone(String name, int capacity){ // 매개변수가 있는 생성자
    this.name = name;
    this.capacity = capacity;
}

 

5. Getter & Setter

  • OOP에서는 객체 외부에서 직접적인 접근을 막는다.
    • 외부에서 데이터를 읽고 변경 시 객체의 무결성이 깨질 수 있기 때문
    • 메소드를 통해 데이터를 변경한다.
  • 접근제어자 private은 해당 클래스 내에서만 접근 가능함
  • Setter : private으로 선언된 변수의 값을 수정할때 사용
  • Getter : 데이터를 읽어올때 사용
class Phone(){
    private String name;
    private int capacity;

    public String getName(){
        return name;
    }

    public String setName(String name){
        this.name = name;
    }

     public int getcapacity(){
        return capacity;
    }

    public int setcapacity(int capacity){
        this.capacity = capacity;
    }
}

public static void main(String[] args){
    Phone phone = new Phone();
    phone.setName("아이폰14Pro Max");
    phone.setCapacity(512);

    System.out.println("이름 : " + phone.getName());
    System.out.println("용량 : " + phone.getCapacity() + "GB");
}

 

728x90

'Java' 카테고리의 다른 글

클래스 - 샌드위치 만들기  (0) 2023.06.07
클래스 - 3  (0) 2023.06.07
클래스 - 1  (0) 2023.06.07
메소드 - 개인정보 일부 비공개 하기  (0) 2023.06.07
배열 - 신발 사이즈 옵션 출력하기  (0) 2023.06.07

+ Recent posts