[Java] 객체지향개념 - 메서드

miyeon·2023년 3월 19일
0

Java

목록 보기
2/10
post-thumbnail

메서드란?

  • 문장들을 작업단위로 묶어 놓은 것 (명령문 집합)
  • 값(입력)을 받아서 처리하고, 결과를 반환(출력)
  • 객체지향 개념에서의 함수
    - ❓함수와의 차이 : 메서드는 class안에 위치, 함수는 class에 독립적
  • 하나의 메서드는 한가지 기능만 수행하도록 작성

    메서드의 장점

    1. 코드의 중복을 줄일 수 있다.
    2. 코드의 관리가 쉽다.
    3. 코드를 재사용할 수 있다.
    4. 코드가 간결해서 이해하기 쉬워진다.



메서드의 종류

💡 iv(인스턴스 변수)의 사용여부로 구분


1. static 메서드 (클래스 메서드)

  • static이 붙은 메서드
  • iv를 사용할 수 없다.
    • static 메서드는 lv, cv 사용
  • 객체 생성 없이 호출 가능
    • clas이름.메서드이름();
    • 객체는 iv의 묶음이고 객체는 iv를 사용하기 위해서 생성 해주는것인데,
      static 매서드는 iv를 사용하지 않기 때문에 객체생성이 필요없음
  • 인스턴스 메서드 호출 불가
    👉 static메서드 호출시 객체가 없을 수도 있기 때문에



2. 인스턴스 메서드

  • static이 안붙은 메서드
  • iv를 사용 (lv, cv 모두 사용가능)
  • 인스턴스 생성 후 호출 가능
    • 인스턴스메서드는 iv를 사용하고 iv로 작업하기 위해서는 인스턴트를 생성해서 iv를 생성해주어야 함
  • static메서드 호출 가능
    👉 static메서드는 객체가 필요없기 때문에 언제나 호출 가능


static을 붙이는 경우

1. 변수

속성 중에 공통 속성일 경우 👉 클래스 변수

2. 메서드

인스턴스 멤버(인스턴스 변수, 인스턴스 메서드)를 사용하지 않는 메서드
👉 메서드에 붙은 static은 모든 객체에 공통적인 메서드라서가 아닌, iv를 사용하지 않을 때 붙임


정리📝

  • static 메서드(클래스 메서드)는 객체 생성이 필요하지 않음
    ( ∵ iv를 사용하지 않아서)
  • iv를 사용하지 않는 메서드면 static 메서드(클래스 메서드)로 정의
    ( 인스턴스 메서드는 이와 반대 )



메서드 오버로딩

하나의 클래스에 같은 이름의 메서드를 여러개 정의 하는것
👉 같은 이름 = 하는 작업이 같다.

조건

  1. 매개변수의 타입이 다르거나 개수가 달라야 한다.
  2. 메서드의 이름이 같아야 한다.
  3. 반환타입은 영향을 미치지 않는다.

👉 1, 2번 중 1개라도 해당하지 않으면 중복 정의 에러가 발생한다.

예시

long add(int a, long b) {  }
int add(long a, long b) {  }

위처럼 메서드 작성시, 호출할 때 매개변수의 타입 주의!💡

add(2, 3);

어떤 메서드 호출인지 모호해서 에러 발생

add(2, 3L);

위처럼 타입을 구분해서 작성해주야 함!


(메서드) 오버라이딩(Overriding)

상속받은 조상 클래스의 메서드를 자신에 맞게 변경하는 것
(선언부X, 구현부{ }만 변경 가능)

조건

  1. 선언부가 조상 클래스의 메서드와 일치해야 함
  2. 접근 제어자를 조상 클래스의 메서드 보다 좁은 볌위로 변경할 수 없다.
  3. 예외는 조상 클래스의 메서드 보다 많이 선언할 수 없다.
class MyPoint3 {
	int x;
	int y;

	String getLocation() {
		return "x:"+x+",y:"+y;
	}

}

class MyPoint3D extends MyPoint3 {
	int z;
	
	String getLocation() {
		return "x:"+x+",y:"+y+",z:"+z;		//오버라이딩
	}
	
}

💡 오버로딩 vs 오버라이딩

오버로딩은 새로 만드는 것, 오버라이딩은 변경


참고 📑

profile
내가 보려고 기록하는 블로그

0개의 댓글