> Java > java지도 시간 > 본문

객체 지향 프로그래밍의 추상화

Linda Hamilton
풀어 주다: 2024-10-17 08:08:31
원래의
446명이 탐색했습니다.

Abstração em Programação Orientada a Objetos

추상화란 무엇입니까?

추상화는 복잡한 구현 세부 사항을 숨기고 필수 기능만 표시하는 시스템 기능을 나타내는 객체 지향 프로그래밍(OOP)의 기본 원칙 중 하나입니다. 추상화의 목표는 사용자가 객체의 기능보다는 객체의 기능에 집중할 수 있도록 하여 복잡한 객체와의 상호 작용을 단순화하는 것입니다.

실제로 추상화는 서브클래스나 구체적인 클래스에서 구현해야 하는 동작을 정의하는 추상 클래스인터페이스를 사용하여 수행됩니다.

왜 추상화를 사용하는가?

추상화는 여러 가지 이점을 제공합니다.

  • 단순성: 복잡성을 숨기고 사용자가 더 간단하고 직관적인 방식으로 개체와 상호 작용할 수 있도록 합니다.
  • 코드 재사용: 클래스와 인터페이스를 다양한 상황에서 재사용하여 일관성을 높일 수 있습니다.
  • 유지관리성: 구현 세부 사항을 변경해도 공개 인터페이스가 동일하게 유지되는 한 추상화를 사용하는 코드에는 영향을 미치지 않습니다.

Java의 추상화 예

1. 추상 클래스 사용

추상 클래스를 사용하면 구현이 없는 메서드(추상 메서드)와 하위 클래스에서 사용할 수 있는 구체적인 메서드를 정의할 수 있습니다. Shape라는 추상 클래스와 Circle 및 Rectangle의 하위 클래스를 사용하여 예제를 만들어 보겠습니다.

// Classe abstrata
public abstract class Forma {
    // Método abstrato
    public abstract double calcularArea();

    // Método concreto
    public void imprimirArea() {
        System.out.println("A área é: " + calcularArea());
    }
}
로그인 후 복사
// Subclasse Circulo
public class Circulo extends Forma {
    private double raio;

    public Circulo(double raio) {
        this.raio = raio;
    }

    // Implementando o método calcularArea
    @Override
    public double calcularArea() {
        return Math.PI * raio * raio;
    }
}
로그인 후 복사
// Subclasse Retangulo
public class Retangulo extends Forma {
    private double largura;
    private double altura;

    public Retangulo(double largura, double altura) {
        this.largura = largura;
        this.altura = altura;
    }

    // Implementando o método calcularArea
    @Override
    public double calcularArea() {
        return largura * altura;
    }
}
로그인 후 복사

클래스 사용

public class Main {
    public static void main(String[] args) {
        Forma circulo = new Circulo(5);
        Forma retangulo = new Retangulo(4, 6);

        // Imprimindo áreas
        circulo.imprimirArea();  // Saída: A área é: 78.53981633974483
        retangulo.imprimirArea(); // Saída: A área é: 24.0
    }
}
로그인 후 복사

예상 출력:

A área é: 78.53981633974483
A área é: 24.0
로그인 후 복사

2. 인터페이스 사용

인터페이스는 추상화를 구현하는 또 다른 방법입니다. 이를 구현하는 클래스가 제공해야 하는 메서드를 정의하지만 기본 구현을 제공하지는 않습니다.

// Interface
public interface Forma {
    double calcularArea();
    void imprimirArea();
}
로그인 후 복사
// Classe Circulo implementando a interface
public class Circulo implements Forma {
    private double raio;

    public Circulo(double raio) {
        this.raio = raio;
    }

    @Override
    public double calcularArea() {
        return Math.PI * raio * raio;
    }

    @Override
    public void imprimirArea() {
        System.out.println("A área do círculo é: " + calcularArea());
    }
}
로그인 후 복사
// Classe Retangulo implementando a interface
public class Retangulo implements Forma {
    private double largura;
    private double altura;

    public Retangulo(double largura, double altura) {
        this.largura = largura;
        this.altura = altura;
    }

    @Override
    public double calcularArea() {
        return largura * altura;
    }

    @Override
    public void imprimirArea() {
        System.out.println("A área do retângulo é: " + calcularArea());
    }
}
로그인 후 복사

클래스 사용

public class Main {
    public static void main(String[] args) {
        Forma circulo = new Circulo(5);
        Forma retangulo = new Retangulo(4, 6);

        // Imprimindo áreas
        circulo.imprimirArea();  // Saída: A área do círculo é: 78.53981633974483
        retangulo.imprimirArea(); // Saída: A área do retângulo é: 24.0
    }
}
로그인 후 복사

예상 출력:

A área do círculo é: 78.53981633974483
A área do retângulo é: 24.0
로그인 후 복사

최종 고려 사항

추상화는 객체 지향 프로그래밍의 기본 개념으로, 시스템을 더 간단하고 재사용 가능하며 유지 관리하기 쉽게 만드는 데 도움이 됩니다. 개발자는 추상 클래스와 인터페이스를 사용하여 구현 복잡성을 숨겨 사용자와 시스템의 다른 부분이 직관적인 방식으로 개체와 상호 작용할 수 있습니다. 추상화를 이해하고 적용하는 것은 효과적인 객체 지향 소프트웨어 개발에 매우 ​​중요합니다.

위 내용은 객체 지향 프로그래밍의 추상화의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!