> Java > java지도 시간 > Java에서 추상 클래스를 인스턴스화하는 방법은 무엇입니까?

Java에서 추상 클래스를 인스턴스화하는 방법은 무엇입니까?

王林
풀어 주다: 2023-08-28 23:45:06
앞으로
1198명이 탐색했습니다.

Java에서 추상 클래스를 인스턴스화하는 방법은 무엇입니까?

추상 클래스는 Java에서 "Abstract" 키워드를 통해 선언된 클래스입니다. 추상 클래스는 "상속"이라는 개체 지향 프로그래밍(OOP)의 네 가지 원칙 중 하나의 개념입니다. 상속이란 "서브클래스"라는 클래스가 클래스의 모든 속성을 상속하는 Java 클래스의 기능을 말합니다. 부모 클래스는 종종 "슈퍼클래스"라고 불립니다.

Java에서 추상 클래스는 다른 하위 클래스가 상속할 수 있는 기본 슈퍼 클래스를 나타냅니다. 추상 메소드와 비추상 메소드를 모두 포함할 수 있습니다.

알고리즘

  • 1단계 - 기본 구현이 있거나 구현되지 않은 클래스의 메서드를 식별합니다.

  • 2단계 - 이러한 메소드의 구현을 제거합니다.

  • 3단계 - 클래스 선언에 추상 키워드를 추가합니다.

  • 4단계 - 2단계에서 수정한 메서드 선언에 abstract 키워드를 추가합니다.

  • 5단계 - 클래스에 초기화해야 할 인스턴스 변수가 있는 경우 생성자를 추가하여 초기화합니다.

  • 6단계 - 추상 클래스의 하위 클래스를 업데이트하여 추상 메서드를 구현하거나 자체적으로 추상화합니다.

문법

Java에서 추상 클래스를 인스턴스화하는 구문을 살펴보겠습니다. -

으아악

방법

추상 클래스는 불완전한 클래스이므로 "new" 키워드를 사용하여 직접 인스턴스화할 수 없습니다.

  • 구체적인 하위 클래스 - 모호하거나 불완전한 추상 클래스를 올바르게 인스턴스화하기 위해 구체적인 하위 클래스를 사용하는 옵션이 있습니다. 이 상위 추상화를 원활하게 확장하고 각 메서드 요구 사항을 구현함으로써 사용자는 작업 오류나 불일치 없이 새로 인스턴스화된 하위 클래스를 성공적으로 생성하고 구현할 수 있습니다.

  • Lambda 표현식 - 추상 클래스에서 객체를 생성하려면 또 다른 옵션이 있습니다. 모든 추상화에 대한 구현을 제공하는 람다 표현식을 사용하는 것입니다. 그런 다음 이 람다 생성은 이러한 서명을 기반으로 호환되는 기능 인터페이스 변수에 할당됩니다.

추상 클래스 인스턴스화

추상 클래스의 사용을 이해하기 위해 샘플 코드 조각을 살펴보겠습니다. 첫 번째 시나리오에서는 추상이 아닌 클래스가 포함된 코드를 제공합니다.

으아악

출력

으아악

Circle 및 Rectangle 클래스는 모두 "Shape" 슈퍼 클래스의 printName(), Area() 및 printDetails() 메서드를 상속합니다. 그러나 두 클래스 모두 자체 구현을 제공하기 위해 Area() 메서드를 재정의하지 않습니다.

Circle 개체의 printDetails() 메서드를 호출하면 "나는 원입니다...그리고 내 면적은 38.48451입니다"가 출력됩니다. 마찬가지로 Rectangle 객체에 대해 printDetails() 메서드를 호출하면 "나는 직사각형이고...내 면적은 20.0입니다."가 인쇄됩니다. 이렇게 하면 출력이 각 클래스에 제공된 특정 구현에 따라 올바른 모양과 해당 영역을 반영하도록 보장됩니다

예 1: 콘크리트 하위 클래스

으아악

출력

으아악

위의 업데이트된 코드에서 Circle 및 Rectangle 클래스는 "Shape" 추상 클래스에 정의된 추상 메서드 printName() 및 Area()를 구현합니다. Shape 클래스의 printDetails() 메서드는 이러한 메서드를 사용하여 모양 이름과 해당 영역을 인쇄할 수 있습니다.

Shape를 추상 클래스로 만들고 추상 메서드를 정의함으로써 Shape 클래스를 확장하는 모든 클래스가 printName() 및 Area() 메서드에 대한 자체 구현을 제공해야 함을 보장합니다.

예 2: 람다 표현식

으아악

출력

으아악

이 코드의 최신 업데이트에서는 getName() 함수를 내부화하면서 Shape를 추상 클래스로 지정하는 향상된 방법을 도입했습니다. 추가 개선에는 getName()의 데이터를 성공적으로 활용하여 각 해당 모양의 이름을 표시하는 printName 메서드를 통합하는 것이 포함됩니다. Circle 및 Rectangle 하위 클래스의 경우 이제 예상되는 형식이 정확하게 식별되도록 람다 식을 사용하여 해당 getName을 재정의합니다.

결론

요약하자면 추상 클래스는 직접 인스턴스화할 수 없고 기본 하위 클래스를 통해서만 인스턴스화할 수 있습니다. 이것은 유전된 개념입니다.

이의 주된 이유는 추상 클래스가 해당 메서드와 개체의 완전한 구현이 아니지만 하위 클래스에서 이를 상속하는 데 사용된다는 것입니다.

위 내용은 Java에서 추상 클래스를 인스턴스화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:tutorialspoint.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿