오버로딩과 오버라이딩

hodu·2023년 4월 12일
0

오버라이딩(Overriding)

자바스크립트에서는 상속 관계를 이용하여 오버라이딩을 구현할 수 있다. 하위 클래스에서 상위 클래스의 메서드를 다시 정의하면 하위 클래스에서 정의된 메서드가 호출되어 동작합니다.
예를 들어, 다음과 같이 Shape 클래스를 상속받은 Circle 클래스에서 getArea 메서드를 오버라이딩할 수 있습니다.

class Shape {
    getArea() {
        return 0;
    }
}

class Circle extends Shape {
    constructor(radius) {
        super();
        this.radius = radius;
    }

    getArea() {
        return Math.PI * this.radius * this.radius;
    }
}

보다보니 상속과 헷갈린다.

상속은 부모 클래스에서 정의된 특성과 메서드를 자식 클래스가 물려받아 재사용할 수 있는 기능입니다.

오버라이딩은 상속된 메서드를 하위 클래스에서 재정의하는 것을 의미합니다. 즉, 하위 클래스에서 상위 클래스의 메서드를 재정의하여 동작을 변경할 수 있는 기능입니다.

따라서, 상속은 클래스의 특성과 메서드를 재사용하기 위한 개념이고, 오버라이딩은 상속된 메서드를 재정의하여 다형성을 구현하는 개념입니다.

오버로딩

오버로딩은 같은 이름의 메서드를 여러 개 정의하는 것을 의미합니다. 즉, 같은 이름의 메서드가 매개변수의 개수, 자료형 등에 따라 다른 동작을 수행하도록 하는 것입니다. 메서드 오버로딩은 다형성(polymorphism)의 한 예입니다. 메서드 오버로딩을 사용하면 같은 이름의 메서드를 여러 개 만들어 코드의 가독성을 높이고, 유지보수성을 향상시킬 수 있습니다.

public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }

    public double add(double a, double b) {
        return a + b;
    }
    
    
    
    public class Main {
    public static void main(String[] args) {
        Calculator calculator = new Calculator();

        int result1 = calculator.add(3, 5); // int 타입의 add() 메소드 호출
        System.out.println(result1); // 8 출력

        double result2 = calculator.add(3.2, 5.7); // double 타입의 add() 메소드 호출
        System.out.println(result2); // 8.9 출력
    }
}

오버로딩은 자바스크립트에서 지원하지 않는 기능이라서 생소했다.
소수가 들어가면 double이 정수면 int가 작동하는 것이 오버로딩이다.

블록체인

블록체인은 분산 시스템을 기반으로 한 탈중앙화된 데이터베이스 기술로, 데이터를 중앙 집중형으로 저장하지 않고 분산 저장하며, 각각의 블록이 서로 연결되어 체인 형태로 이루어져 있는 기술입니다.

블록체인의 핵심 기술은 해시 함수와 암호화 기술입니다. 블록체인에서는 해시 함수를 이용하여 데이터를 고유한 해시값으로 변환하고, 암호화 기술을 이용하여 데이터를 보호합니다. 또한, 블록체인은 분산 시스템을 기반으로 하기 때문에 각각의 노드에서 동일한 데이터를 공유하고, 모든 거래 정보를 블록 단위로 기록하고 이를 체인 형태로 연결하여 블록체인을 구성합니다.

블록체인은 탈중앙화와 보안성이 강점입니다. 중앙 집중형 데이터베이스는 한 곳에 모든 데이터가 집중되어 있기 때문에, 해당 서버에 문제가 생기면 데이터 전체가 손상될 가능성이 있습니다. 하지만 블록체인에서는 데이터가 분산되어 있기 때문에, 하나의 노드에 문제가 생겨도 다른 노드에서 데이터를 복제할 수 있습니다. 또한, 암호화 기술과 해시 함수를 이용하여 블록체인 내부의 데이터는 변조될 수 없도록 보호됩니다.

블록체인은 현재 금융, 보안, 의료, 에너지 등 다양한 분야에서 활용되고 있으며, 블록체인을 기반으로 한 암호화폐가 대표적인 예시입니다.






마무리

블록체인 내용을 공부하였지만, 직접 글로 쓰지 않고, 정리하지 않았다. 그것이 아쉬웠다.
공부한다면 정리하고 실제로 사용하는 것까지가 공부이다.
객체 지향 프로그래밍도 공부하였지만, 오버라이딩과 오버로딩에 대해 숙지하지 못했다.
공부한 것을 헷갈리는 것 만큼 수치스러운 것은 없다.

profile
잘부탁드립니다.

0개의 댓글