3.1. 프로그램언어 자바(Java)의 클래스와 객체

프로그램언어 자바(Java)에서의 객체 생성과 사용

프로그램언어 자바(Java)에서의 객체 생성과 사용에 대해 알아보겠습니다.

자바에서 객체를 생성하는 과정은 다음과 같습니다. 먼저 클래스를 정의하고, 그 클래스를 이용하여 객체를 생성합니다. 객체를 생성하기 위해서는 ‘new’ 키워드를 사용하며, 생성된 객체는 메모리에 할당됩니다. 이후 생성된 객체를 이용하여 해당 클래스의 멤버 변수나 메서드에 접근할 수 있습니다.

아래는 객체 생성과 사용의 예제 코드입니다.


class Car {
    String brand;
    int year;

    public Car(String brand, int year) {
        this.brand = brand;
        this.year = year;
    }

    public void displayInfo() {
        System.out.println("Brand: " + brand);
        System.out.println("Year: " + year);
    }
}

public class Main {
    public static void main(String[] args) {
        Car myCar = new Car("Toyota", 2020);
        myCar.displayInfo();
    }
}

위 예제 코드에서는 ‘Car’ 클래스를 정의하고, ‘Car’ 클래스를 이용하여 ‘myCar’ 객체를 생성하고 초기화합니다. 그 후 ‘displayInfo’ 메서드를 호출하여 해당 객체의 정보를 출력합니다.

이렇게 자바에서 객체를 생성하고 사용하는 과정을 통해 객체지향 프로그래밍의 장점을 활용할 수 있습니다. 객체를 통해 데이터와 기능을 하나로 묶어 유지보수성과 확장성을 높일 수 있습니다.

프로그램언어 자바(Java)에서의 클래스 정의와 활용

자바(Java) 프로그래밍 언어에서 클래스는 객체 지향 프로그래밍의 기본 요소 중 하나로, 데이터와 해당 데이터를 처리하는 메서드를 함께 묶어서 정의하는 것을 말합니다. 클래스는 객체를 생성하기 위한 틀이며, 객체는 클래스의 인스턴스입니다. 클래스를 정의할 때에는 다음과 같은 형식을 따릅니다.


public class ClassName {
    // 멤버 변수(데이터)
    private dataType variableName;

    // 생성자(Constructor)
    public ClassName(parameters) {
        // 생성자의 내용
    }

    // 메서드(Method)
    public returnType methodName(parameters) {
        // 메서드의 내용
    }
}

위의 코드에서 ClassName은 클래스의 이름을 나타내며, 멤버 변수는 클래스의 속성을 나타내는 데이터를 선언합니다. 생성자는 객체를 초기화하는 역할을 하며, 메서드는 클래스가 수행하는 동작을 정의합니다. 클래스를 활용할 때에는 다음과 같이 객체를 생성하고 메서드를 호출할 수 있습니다.


public class Main {
    public static void main(String[] args) {
        // 클래스의 객체 생성
        ClassName objectName = new ClassName();

        // 멤버 변수에 접근
        objectName.variableName = value;

        // 메서드 호출
        objectName.methodName(parameters);
    }
}

위의 예제 코드에서는 Main 클래스에서 ClassName 클래스를 활용하는 방법을 보여줍니다. 객체를 생성하고 멤버 변수에 접근하거나 메서드를 호출할 때에는 객체 이름 뒤에 점(.)을 찍고 해당 멤버 변수나 메서드를 호출합니다. 이를 통해 클래스를 정의하고 활용하는 기본적인 방법을 이해할 수 있습니다.

프로그램언어 자바(Java)에서의 클래스와 객체의 상속

클래스와 객체의 상속은 자바 프로그래밍에서 중요한 개념 중 하나입니다. 상속은 한 클래스가 다른 클래스의 속성과 메서드를 이어받아 확장하는 것을 말합니다. 이를 통해 코드의 재사용성을 높이고 유지보수를 용이하게 할 수 있습니다.

예를 들어, 부모 클래스인 ‘동물’ 클래스가 있고, ‘고양이’ 클래스와 ‘강아지’ 클래스가 ‘동물’ 클래스를 상속받는다고 가정해봅시다. ‘동물’ 클래스에는 일반적인 동물의 특성과 메서드가 정의되어 있고, ‘고양이’ 클래스와 ‘강아지’ 클래스는 각각 고유한 특성을 추가할 수 있습니다.

이제 예제 코드를 통해 클래스와 객체의 상속을 살펴보겠습니다.


class Animal {
    String name;

    public Animal(String name) {
        this.name = name;
    }

    public void eat() {
        System.out.println(name + " is eating.");
    }
}

class Cat extends Animal {
    public Cat(String name) {
        super(name);
    }

    public void meow() {
        System.out.println(name + " says meow.");
    }
}

public class Main {
    public static void main(String[] args) {
        Cat myCat = new Cat("Whiskers");
        myCat.eat(); // 상속받은 eat() 메서드 호출
        myCat.meow(); // Cat 클래스의 meow() 메서드 호출
    }
}

위의 예제 코드에서 ‘Animal’ 클래스는 동물을 나타내는 부모 클래스이고, ‘Cat’ 클래스는 ‘Animal’ 클래스를 상속받는 자식 클래스입니다. ‘Cat’ 클래스에는 ‘meow’ 메서드가 추가되어 있습니다. ‘Main’ 클래스에서는 ‘Cat’ 객체를 생성하고 부모 클래스인 ‘Animal’의 메서드와 자식 클래스인 ‘Cat’의 메서드를 모두 호출하는 예제입니다.

이렇게 상속을 통해 클래스 간에 계층 구조를 형성하고, 부모 클래스의 속성과 메서드를 자식 클래스에서 재사용할 수 있습니다. 이는 객체지향 프로그래밍의 핵심 개념 중 하나이며, 자바에서도 매우 중요한 개념입니다.

프로그램언어 자바(Java)에서의 인터페이스와 추상 클래스

인터페이스와 추상 클래스는 자바(Java) 프로그래밍에서 중요한 개념입니다. 이 두 가지 개념은 다형성(polymorphism)을 구현하고 코드 재사용성을 높이는 데 도움을 줍니다.

인터페이스(Interface)

인터페이스는 추상 메서드의 집합으로 이루어진 참조 타입입니다. 인터페이스는 메서드의 명세만을 정의하고, 구현은 하위 클래스에서 이루어집니다. 이를 통해 다른 클래스들이 동일한 동작을 보장받을 수 있습니다.

인터페이스의 특징

  • 인터페이스는 ‘interface’ 키워드를 사용하여 선언됩니다.
  • 인터페이스는 추상 메서드와 상수만을 가질 수 있습니다.
  • 인터페이스는 다중 상속이 가능합니다.

인터페이스의 예제 코드


public interface Animal {
    void eat();
    void sleep();
}

public class Dog implements Animal {
    @Override
    public void eat() {
        System.out.println("Dog is eating");
    }

    @Override
    public void sleep() {
        System.out.println("Dog is sleeping");
    }
}

추상 클래스(Abstract Class)

추상 클래스는 일부 메서드가 구현되어 있고 일부는 추상 메서드로 선언된 클래스입니다. 추상 클래스는 일반 메서드와 추상 메서드를 모두 포함할 수 있습니다.

추상 클래스의 특징

  • 추상 클래스는 ‘abstract’ 키워드를 사용하여 선언됩니다.
  • 추상 클래스는 일반 메서드와 추상 메서드를 모두 가질 수 있습니다.
  • 추상 클래스는 인스턴스를 생성할 수 없지만, 상속을 통해 하위 클래스에서 확장하여 사용할 수 있습니다.

추상 클래스의 예제 코드


public abstract class Shape {
    private String color;

    public Shape(String color) {
        this.color = color;
    }

    public abstract double calculateArea();
}

public class Circle extends Shape {
    private double radius;

    public Circle(String color, double radius) {
        super(color);
        this.radius = radius;
    }

    @Override
    public double calculateArea() {
        return Math.PI * radius * radius;
    }
}

프로그램언어 자바(Java)에서의 내부 클래스 사용하기

자바(Java) 프로그래밍 언어에서 내부 클래스(Inner Class)는 다른 클래스 내부에 선언되는 클래스를 말합니다. 내부 클래스는 외부 클래스의 멤버 변수 및 메서드에 쉽게 접근할 수 있고, 코드의 가독성과 모듈화를 향상시키는 데 도움이 됩니다. 내부 클래스는 주로 외부 클래스에서만 사용되는 보조 클래스를 정의할 때 유용하게 활용됩니다.

내부 클래스를 사용하는 방법은 간단합니다. 내부 클래스는 외부 클래스의 멤버 변수나 메서드와 동일한 위치에 선언되며, 일반적으로 private으로 선언하여 외부에서 직접 접근하지 못하도록 합니다. 내부 클래스는 외부 클래스의 인스턴스를 생성해야만 사용할 수 있습니다.

아래는 내부 클래스를 사용한 간단한 예제 코드입니다. 외부 클래스인 OuterClass 내부에 내부 클래스인 InnerClass를 정의하고, 외부 클래스의 메서드에서 내부 클래스를 활용하는 방법을 보여줍니다.


class OuterClass {
    private int outerVar = 10;

    class InnerClass {
        public void display() {
            System.out.println("Outer 변수 값: " + outerVar);
        }
    }

    public void outerMethod() {
        InnerClass inner = new InnerClass();
        inner.display();
    }
}

public class Main {
    public static void main(String[] args) {
        OuterClass outer = new OuterClass();
        outer.outerMethod();
    }
}

위 예제 코드에서는 OuterClass 내부에 InnerClass를 정의하고, InnerClass에서는 OuterClass의 멤버 변수인 outerVar에 접근하여 값을 출력하는 display() 메서드를 정의했습니다. outerMethod() 메서드에서는 InnerClass의 인스턴스를 생성하고 display() 메서드를 호출하여 결과를 출력합니다.

Leave a Comment