프로그래밍 언어/JAVA

자바 클래스 만들기

· 코딩마이데이

클래스와 객체

클래스는 객체를 만들어 내기 위한 설계도 혹은 툴이며, 클레스 모양 그대로 생성된 실체가 객체입니다.

이러한 연유로 객체를 클래스의 인스턴스(instance)라고도 부릅니다.

클래스는 하나이지만 객체들은 수 없이 많이 생성될 수 있습니다.

객체들은 클래스의 모양대로 동일한 속성을 가지고 탄생하지만, 자신만의 고유한 값을 가짐으로써 구분됩니다.

 

클래스 구성

자바 클래스는 class 키워드를 사용하여 선언합니다.

클래스의 구성 요소를 멤버라고 부르며, 멤버는 필드(멤버 변수)와 메소드(멤버 함수)의 두 가지 입니다.

클래스 구성

 

 

클래스 선언

class 키워드와 클래스 이름으로 선언하고 중괄호({ }) 안에 필드(field)와 메소드(method)를 모두 작성합니다.

캡슐화의 원칙클래스 외부에는 어떤 필드나 메소드를 둘 수 없습니다.

 

필드와 메소드

객체 내에 값을 저장할 멤버 변수를 필드라고 부릅니다.

메소드는 함수이며 객체의 행동을 구현합니다.

 

접근 지정자, public

메소드에 붙은 public을 접근 지정자(access specifier)라고 합니다.

public은 다른 클래스에서 활용하거나 접근할 수 있음을 선언합니다.

접근 지정자를 생략할 때 디폴트 접근이라고 부르며, 접근 지정자는 뒤에서 자세히 다릅니다.

 

생성자(constructor)

클래스의 이름과 동일한 메소드를 특별히 생성자(constructor)라고 합니다.

생성자는 객체가 생성될 때 자동으로 호출되는 특별한 메소드입니다.

 

new 연산자와 객체 생성, 그리고 레퍼런스 변수

public static void main(String args[]) {
	Circle pizza; // Circle 객체에 대한 레퍼런스 변수 pizza 선언
	pizza = new Circle(); // Circle 객체 생성
    
	pizza.radius = 10; // radius 필드에 10 저장
	pizza.name = "자바피자"; // name 필드에 "자바피자" 저장
	double area = pizza.getArea(); // pizza 객체의 면적 알아내기
 }

 

객체 생성 및 객체 접근

 

레퍼런스 변수 선언

객체를 생성하기 전, 객체를 가리킬 레퍼런스 변수를 먼저 선언합니다.

Circle pizza; // 레퍼런스 변수 pizza 선언

 

변수는 레퍼런스를 가지는 변수일 뿐, 객체 자체는 아닙니다.

 

객체 생성, new 연산자 이용

반드시 new 연산자를 사용해야 합니다.

pizza = new Circle();

 

new 연잔자에 의해 객체가 생성되는 과정은 다음과 같습니다.

  • 타입 크기의 메모리 할당
  • 생성자 코드 실행

생성자는 객체가 생성될 때 필드를 초기화하거나 생성 당시에 꼭 필요한 작업을 위해 두는 것입니다.

레퍼런스 변수 선언과 객체 생성은 다음과 같이 동시에 할 수도 있습니다.

Circle pizza = new Circle();

 

객체 멤버 접근

객체의 멤버에 접근할 때는 다음과 같이 레퍼런스 변수 뒤에 점(..) 연산자를 붙입니다.

객체 레퍼런스.멤버
pizza.radius = 10;

 

pizza 객체의 radius 필드 값을 읽을 경우 다음과 같이 하면 됩니다.

int r = pizza.radius;

 

Circle 클래스의 객체 생성 및 활용

 

public class Circle {
    int radius; // 원의 반지름 필드
    String name; // 원의 이름 필드

    public Circle() {
    } // 생성자

    public double getArea() { // 원의 면적 계산 메소드
        return 3.14 * radius * radius;
    }

    public static void main(String[] args) {
        Circle pizza; // 레퍼런스 변수 pizza 선언
        pizza = new Circle(); // Circle 객체 생성
        pizza.radius = 10; // 피자의 반지름을 10으로 설정
        pizza.name = "자바피자"; // 피자의 이름 설정
        double area = pizza.getArea(); // 피자의 면적 알아내기
        System.out.println(pizza.name + "의 면적은 " + area);

        Circle donut = new Circle(); // Circle 객체 생성
        donut.radius = 2; // 도넛의 반지름을 10으로 설정
        donut.name = "자바도넛"; // 도넛의 이름 설정
        area = donut.getArea(); // 도넛의 면적 알아내기
        System.out.println(donut.name + "의 면적은 " + area);
    }
}

 

실행 결과

자바피자의 면적은 314.0
자바도넛의 면적은 12.56

 

Rectangle 클래스 만들기 연습

import java.util.Scanner;

class Rectangle {
    int width;
    int height;
    public int getArea() {
        return width * height;
    }
}

public class RectApp {
    public static void main(String[] args) {
        Rectangle rect = new Rectangle(); // 객체 생성
        Scanner scanner = new Scanner(System.in);
        System.out.print(">> ");
        rect.width = scanner.nextInt();
        rect.height = scanner.nextInt();
        System.out.println("사각형의 면적은 " + rect.getArea());
        scanner.close();
    }
}


 

실행 결과

>> 4 5
사각형의 면적은 20

'프로그래밍 언어 > JAVA' 카테고리의 다른 글

객체 배열  (1) 2025.01.31
생성자  (1) 2025.01.30
객체 지향과 자바  (0) 2025.01.28
자바의 예외 처리  (0) 2025.01.28
main() 메소드  (1) 2025.01.27