Class

임성준·2022년 1월 17일
0

Java 기초 문법

목록 보기
7/14
post-thumbnail

객체 지향 프로그래밍

OOP, Object-Oriented Programming

클래스(class)란 객체를 정의하는 틀 또는 설계도와 같은 의미로 사용됩니다.

객체 지향 프로그래밍에서는 모든 데이터를 객체(object)로 취급

💎 클래스의 구성(member)
1. field - 클래스에 포함된 변수(variable)를 의미
2. method - 어떠한 특정 작업을 수행하기 위한 명령문의 집합

💎 Keyword
1. instance - 메모리에 할당된 객체를 의미

  • 이렇게 생성된 인스턴스는 독립된 메모리 공간에 저장된 자신만의 필드를 가질 수 있다.
  • 클래스의 모든 메소드(method)는 해당 클래스에서 생성된 모든 인스턴스가 공유하게된다.

method

문법
접근제어자 반환타입 메소드이름(매개변수목록) { // 선언부
// 구현부
}

1. 접근 제어자 : 해당 메서드에 접근할 수 있는 범위를 명시 (public, private, defalut, protected)

2. 반환 타입(return type) : 메서드가 모든 작업을 마치고 반환하는 데이터의 타입을 명시

3. 메소드 이름 : 메서드를 호출하기 위한 이름을 명시

4. 매개변수 목록(parameters) : 메서드 호출 시에 전달되는 인수의 값을 저장할 변수들을 명시

5. 구현부 : 메서드의 고유 기능을 수행하는 명령문의 집합

💎 자바에서는 하나의 클래스에 같은 이름의 메소드를 둘 이상 정의할 수 없다 하지만 메소드 오버로딩(overloading)을 이용하면, 같은 이름의 메소드를 중복하여 정의할 수 있다.

overloading

매개변수의 개수나 타입을 다르게 하여 같은 이름의 또 다른 메소드를 작성하는 것

💎 메서드의 구분

클래스 내에서 메소드는 static 키워드의 여부에 따라 다음과 같이 구분

  • 1. 클래스 메소드(static method) - static 사용 O
    • 모든 인스턴스에 고정적인 값이 필요할 때 사용
    • 메소드 내부에서 인스턴스 변수나 인스턴스 메소드를 사용하지 않는 메소드를 정의

  • 2. 인스턴스 메소드(instance method) - static 사용 X
    • 메서드 작업 수행시(메서드 실행시) 필드를 필요로 하는 메서드

예제)

class Method {

    int a = 10, b = 20;                            // 인스턴스 변수

    int add() { return a + b; }                    // 인스턴스 메소드

    static int add(int x, int y) { return x + y; } // 클래스 메소드

}

 

public class Member02 {

    public static void main(String[] args) {

        System.out.println(Method.add(20, 30)); // 클래스 메소드의 호출 
        // 출력 -> 50

        Method myMethod = new Method();         // 인스턴스 생성

        System.out.println(myMethod.add());     // 인스턴스 메소드의 호출
        // 출력 -> 30

    }

}

💎 생성자(Constructor)

객체의 생성과 동시에 인스턴스 변수를 원하는 값으로 초기화할 수 있는 메서드

  • 자바에서 생성자(constructor)의 이름은 해당 클래스의 이름과 같아야한다.

  • 생성자는 반환값이 없지만, 반환 타입을 void형으로 선언하지 않는다.

  • 생성자는 초기화를 위한 데이터를 인수로 전달받을 수 있다.

  • 객체를 초기화하는 방법이 여러 개 존재할 경우에는 하나의 클래스가 여러 개의 생성자를 가질 수 있다.

    즉, 생성자도 하나의 메소드이므로, 메소드 오버로딩이 가능하다는 의미이다.

예제)

class Car {

    private String modelName;

    private int modelYear;

    private String color;

    private int maxSpeed;

    private int currentSpeed;

 

// 생성자
    Car(String modelName, int modelYear, String color, int maxSpeed) {

        this.modelName = modelName;

        this.modelYear = modelYear;

        this.color = color;

        this.maxSpeed = maxSpeed;

        this.currentSpeed = 0;

    }

 

    public String getModel() {

        return this.modelYear + "년식 " + this.modelName + " " + this.color;

    }

}

 

public class Method02 {

    public static void main(String[] args) {

        Car myCar = new Car("아반떼", 2016, "흰색", 200); // 생성자의 호출

        System.out.println(myCar.getModel()); // 생성자에 의해 초기화되었는지를 확인함.

    }

}

클래스의 선언

자바에서 클래스를 선언하는 방법은 접근 제어자와 함께 class 키워드를 사용하면 된다.

접근 제어자(access modifier)

객체 지향에서 정보 은닉(data hiding)이란 사용자가 굳이 알 필요가 없는 정보는 사용자로부터 숨겨야 한다는 개념이다. 그렇게 함으로써 사용자는 언제나 최소한의 정보만으로 프로그램을 손쉽게 사용할 수 있게 된다.

자바에서는 이러한 정보 은닉을 위해 접근 제어자(access modifier)라는 기능을 제공하고 있습니다.

접근 제어자의 접근 범위

인스턴스의 생성

문법
클래스이름 객체참조변수이름 = new 클래스이름(); => 선언과 생성을 동시에 진행
예제) Car myCar = new Car();

참조: http://www.tcpschool.com/java/intro

profile
오늘도 공부 📖🌙

0개의 댓글