JAVA 객체, 클래스, 메소드

춘식이 개발로그·2022년 3월 28일
0
post-custom-banner

자바는 객체지향 프로그램 언어이다.
'객체'는 모든 사물을 의미하며 지금 내 앞에있는 핸드폰, 컴퓨터, 책, 사람이 모두 객체이다. 현실세계에서 추출한 객체를 자바와 같은 프로그래밍 언어로 표현하는 개발방법을 객체지향 프로그래밍 이라고 한다.

분석단계의 객체모델링

그림출처 : https://xianeml.tistory.com/27

객체 모델링을 통해 현실세계에서 추출한 객체를 자바 언어로 프로그래밍하기 위해서 클래스 형태로 설계한다. 객체의 속성은 클래스의 인스턴스 변수로 표현하고, 객체의 동작은 클래스의 메소드로 표현한다.

설계된 클래스를 구현단계에서 사용하기 위해 객체 생성이 필요하다. 클래스를 메모리에 올리는 객체 생성 작업을 인스턴스화 라고 하며 메모리에 올라간 객체를 인스턴스 라고 한다. 객체와 인스턴스는 같은 용어이다.

클래스

지정자 class 클래스명{
	인스턴스 변수 // 반드시 new로 쓴다
    메소드
    생성자
}

지정자

특정 목적을 위해 사용하는 키워드이며 일반 지정자(static, final, abstract)와 접근 지정자(public, private, default, protected)로 나뉜다. 생략할 경우 default가 되며 일반적으로 클래스는 public 접근 지정자를 붙인다. 일반 지정자와 접근 지정자는 같이 사용 가능하다.

클래스명

의미있고 간단한 명사형 이름을 사용한다. 첫글자는 대문자로 지정한다.

인스턴스 변수

클래스의 구성요소인 속성값을 지정하는 용도이다. 변수명은 의미있는 명사형으로 소문자로 작성한다. 인스턴스 변수는 로컬 변수와 다르게 생성 후 초기화할 필요없이 자동으로 데이터형의 기본값이 설정된다.

메소드

클래스에는 인스턴스 변수와 더불어 메소드(Method)라는 것이 있는데, 메소드는 클래스 내에 구현된 함수를 의미하는데 보통 함수라고 말하지 않고 메소드라고 말한다. 변수가 정적인 의미라면 메소드는 동적인 의미가 강하다고 볼수 있다.

메소드의 생성과 사용

public class method_test{
	public void a_Method(){
    	System.out.println("a_Method()호출_1");
        System.out.println("a_Method()호출_2");
        System.out.println("a_Method()호출_3");
    
    }// class 선언. 멤버메소드(함수) new 사용 생성

	public static void matin(String[] args){
    	System.out.println("main시작========");
        method_test test = new method_test();	// 객체 생성
        test.a_Method(); // 함수 호출
        System.out.println("main종료========");
        
    }
    
}

클래스 단에 public / 호출한 곳으로 돌아갈 값의 리턴타입 / 함수이름(받을인자값)을 작성해 메소드를 만든다.위의 메소드 정의를 해석해보면
아무데서나 접근가능한 public/수행만하고 돌려주는 값이 없는 void/함수이름 a_Method() 이라는 의미이다.
void는 리턴타입이며 함수에 돌려주는 값이 없을 때 명시한다. 함수에 돌려줄 값이 있을 경우에는 데이터 타입을 명시해야 한다.(String, int 등) 이렇게 클래스 단에 선언된 멤버메소드를 실행하기 위해선 main 메소드 안에서 객체생성을 해야한다.

요약.

  • 객체 : 우리 주위에서 흔히 볼수있는 물건들, 예를들어 핸드폰, 키보드, 모니터, 마우스 같은 것들도 다 객체이다. 이런 객체를 클래스 형태로 설계하고 객체의 속성은 인스턴스 변수로 표현하고 객체의 동작은 메소드로 표현한다.

  • 클래스 : 객체를 설계하고 인스턴스 변수, 메소드 등을 표현한다.

  • 메소드 : 자바의 함수를 의미하며, 객체의 동작을 표현한다.

참고 글

https://xianeml.tistory.com/27
https://gyuni.tistory.com/63

post-custom-banner

0개의 댓글