본문 바로가기
JAVA

JAVA 클래스와 메소드

by 자바비터 2022. 2. 28.

클래스의 개념

여러 유사 객체들이 공통적으로 갖는 속성이나 행위를 기술하는 명세 장치,

객체를 정의하는 틀 또는 설계도와 같다.

 

클래스의 특성

(1) 고유한 이름을 가진다. (중복될 수 없음)

(2) 속성을 지닌다.

 → 클래스는 의미 있는 정보 저장소 역할을 하기 위해 속성을 내표한다.

 → 속성(Property 또는 Attribute)을 자바 언어와 같은 구현 관점에서는 상태 변수, 멤버 변수 혹은 멤버 데이터 등을 표현한다.

 → 클래스는 상태(값)을 갖지는 않고 다만 속성 선언만 할 뿐이다. 상태는 개별 객체들이 갖게 된다.

 

(3) 잘 정의된 행위를 가진다.

 →  행위란 클래스가 내포하고 있는 속성들을 사용하여 처리하는 기능을 의미단다.

 → 행위를 구현 관점에서 표현하면 메소드, 멤버함수라 할 수 있다.

 

클래스와 객체

객체란?

: 자신의 속성을 가지고 있으면서 식별 가능한 것.

 

(1) 클래스는 틀이고 객체는 실사례이다.

//ex) 고객(Customer) 클래스 정의

class Customer{

    String userId;

    String password;

    String name;

    public void addCustomer() {...};

    public void updateCustomer() {...};

    ....

}

//Customer 클래스로부터 c1 객체 생성

Customer c1 = new Customer();

 

(2) 클래스는 상태가 없고 객체는 있다.

→ 클래스는 속성에 대한 선언만 내포하고 있는 반면에 객체는 선언된 각 속성들에 대해 값을 지닌다.

이러한 값을 객체의 상태라고 표현한다.

 

(3) 클래스와 객체는 동일한 속성(=필드)수와 메소드 수를 갖는다.

→ 한 클래스로부터 생성되는 객체들의 속성이나 메소드 수는 동일한다.

 

 

클래스의 속성

속성(=프로퍼티, 어트리뷰트, 필드)

: 객체의 상태를 나타내는 것으로 필드 또는 속성이라 한다.

→ 클래스의 필수 항목으로서 한 클래스 내에서 유일한 속성명을 가져야 한다.

→ 가시성, 속성명, 데이터 타입 순으로 표기되며 초기값을 선택적으로 지정할 수 있다.

 

가시성

→ 객체지향 개념의 정보은닉을 설계하기 위한 도구로서 정보나 행위의 접근 여부를 결정할 수 있다.

public : 전체 접근 가능

protected : 같은 패키지 내, 후손 클래스 안에서 가능

default : 같은 패키지 내에서 가능

private : 해당 클래스 내부에서만 접근 가능(외부에서 접근할 수 없음)

 

데이터 타입

→ 기본 데이터 타입이나 객체 타입으로 정의 될 수 있다.

→ 기본 데이터 타입은 개발 프로그래밍 언어의 특성에 맞게 정의 될 수 있다.

→ 객체 타입은 다른 클래스를 타입으로 정의하여 복합 객체를 설계할 수 있다.

 

 

클래스의 행위

행위(=함수, 메소드)

: JAVA에서 특정 기능을 처리, 다른 프로그래밍 언어에서는 함수 또는 멤버 함수라고도 부름.

→ 클래스의 행위는 가시성, 행위명, 매개변수, 데이터 타입 순으로 표기 된다.

 

행위 가시성

public, private, potected, friendly를 이용하여 정의할 수 있다.

 

행위명

→ 동사로 정의하여 기능에 대한 명확성을 줄 수 있도록 한다.

→ 행위명 만을 통해서 기능의 의미를 파악할 수 있도록 한다.

→ 유일할 필요는 없으며 동일한 행위는 매개변수의 구성(매개변수의 개수 및 매개변수의 데이터 타입)에 따라 다양하게 정의할 수 있다. (오버로딩(Overloading))

 

  

클래스 예제(1)_메소드와 객체
public class Ex17 { //public -> 전체 접근가능한 Ex클래스
	public int increase(int n) { //increase 메소드
		++n;
		return n;
}
public static void main(String[] args) { //메인메소드
	int var1 = 100;
	Ex17 val = new Ex17(); //클래스 객체 생성

	int result = val.increase(var1); 
    //객체를 통해 Ex17 클래스 안의 increase 메소드 사용
    //객체의 메소드를 활용해 result에 연산 결과를 저장
    //var1=100을 매개변수로 넣어줬으니 ++var1이 실행되어 101을 리턴
	System.out.println("varl1 : " + var1 + ", result : " + result);
	//리턴값은 받아오지만 메인메소드에 저장된 var1의 값은 변하지 않는다.
}
}

클래스 예제 실행 결과 화면

 

 

클래스 예제(2)_필드 변수와 메소드, 객체
public class Ex13Rectangel {
	//필드(=속성, 프로퍼티, 어트리뷰트) 변수
	int width;
	int height;
	
	//사각형의 면적을 구하는 메소드(=함수, 행위)
	public int getArea() {
		return width * height;
	}
}
//너비와 높이를 입력 받아 사각형의 합을 출력하는 프로그램
//너비(width)와 높이(height)필드, 그리고 면적 값을 제공하는 getArea() 메소드를 가진
//Rectangle 클래스는 만들어 활용(Ex13으로 함)

 

import java.util.Scanner;

public class Ex13 {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in); //스캐너 클래스 선언 및 초기화
		
		Ex13Rectangel rectangle = new Ex13Rectangel(); //Ex13Rectangle클래스의 객체 생성
		
		System.out.print(">>");
		
		rectangle.width = scan.nextInt(); //rectangle객체 width필드에 입력값 저장
		rectangle.height = scan.nextInt(); //rectangle객체 height필드에 입력값 저장
		
		int answer = rectangle.getArea(); //getArea 메소드값 변수 answer에 저장
		System.out.println("사각형의 면적은 " + answer);
		
		scan.close(); //스캐너 사용 후 닫아주기
	}
}

 

클래스 예제 실행 화면

댓글