[Java] - 클래스, 메서드 (Class, Method)

서현이의 개발 기록장·2022년 10월 18일
0

Java Programming

목록 보기
4/4
post-thumbnail
post-custom-banner

클래스 (Class)

접근자 class 클래스 이름{...}

1. 접근(지정)자

-> 외부에서 이 클래스에 접근할 수 있는지 여부

  • (public: 다른 클래스에서 이 클래스를 이용할 수 있음)
  • 중괄호 안에 클래스의 필드와 메소드를 모두 작성

2. 멤버 (필드)

  • 객체의 상태 값을 저장할 멤버변수. “접근지정자 타입 이름;”

3. 메서드

  • 실행가능한 객체의 행위를 구현 (함수)
  • 경우에 따라 생략가능! “접근지정자 반환타입 함수이름(매개변수) { ... return 값; }”
/** Location 클래스: 위도 경도 표현 및 다른 위치까지의 거리 계산 */ 
public class Location
{
 	public double latitude;	// 멤버 (필드)
 	public double longitude;  // 멤버 (필드)
    
	public Location(double lat, double lon) // 생성 메소드 
    {
  		this.latitude = lat;
    	this.longitude = lon;
    }
    
 	public double distance(Location other) {
 		...
	}
}
  • this: 현재 만들어지고 있는 객체

객체

new

  1. 인스턴스 생성
  2. Heap 메모리 공간 할당
  3. 객체(nes)에게 참조값 리턴

객체의 생성과 사용 내부 과정

메모리 모델 (Memory Model)

  • new를 통해 Location 인스턴스 생성 == Location
  • Heap 메모리 공간 할당 == latitude, longitude
  • 객체에게 참조값 리턴 == erica, seoul

함수의 인자 전달 (Parameter Passing)

변수의 유효 범위 (Variable Scope)

변수의 사용 가능한 범위

변수의 유효 범위가 한전됨에 따른 이점

  • 이름(변수명) 재사용 가능
  • 전체 프로그램의 모든 이름을 외울 필요 없음
  • 이름이 필요한 곳에만 알려짐

1. 지역 변수

-> 현재 메서드 안에서만 값이 정의되고 사용될 수 있음

2. 멤버(전역) 변수

-> 현재 클래스의 어떠한 메서드에서도 값이 정의되고 사용될 수 있음


메서드 (Method)

1. main 메서드

프로그램 실행을 시작시키는 역할

  • 무조건 있어야 하는 메서드
  • this 객체를 반환하며 Initial을 취한다.

2. 반환값 (Return)

알고리즘이 다 수행되고 마지막으로 출력되는 값

  • Return 이후의 코드는 실행되지 않는다.
  • 반환 값을 받지 않아도 수행된다.
  • 받지 않은 값은 무시

3. 메서드 오버로딩 (Overloading)

같은 이름의 메서드 여러개 정의

  • 메서드 이름이 같다.
  • 매개변수의 개수 or 매개변수의 자료형이 달라야 한다.
  • 리턴 타입이 같아야 한다.

4. Public vs Private

Public : 어디에서나 접근 (읽기/ 쓰기) 가능

  • Public 일 때, new로 객체 생성 및 사용 가능

Private : 현재 클래스/ 메서드 내에서만 접근 가능

  • setter: 값을 바꾸어 줄 때 사용됨.
  • getter: Private 때문에 setter의 반환값을 사용하지 못해서 getter를 이용

-> 필드 멤버변수들은 Private으로

-> 메소드들은 성질에 따라 Public or Private

5. Static 필드 변수 및 메서드

  • 객체 생성 없이 바로 사용가능
    ex) Math.PI, Math.abs(f)
  • 타입 앞에 static 붙이면 정의 가능
  • 정적 매서드로 동적 필드에 접근 불가능
profile
HanYang ERICA Univ. Department of Artificial Intelligence
post-custom-banner

0개의 댓글