추상 기본 클래스가있는 이유에 대해 궁금해 프로그램에있는 작은 지식을 가지고 사람. 그들의 목적은 무엇인가? 어떻게 추상 클래스를 만드는 방법? 그들이 실제로 제공하는 장점은 무엇입니까? 그들은 왜이 프로그램에 필요하며, 구현의 일부 기능을 고려해야한다?
추상 클래스
객체를 생성 할 수있는 기준으로 프로그래밍이라는 단위 코드에 따라서. 후계자의이 클래스는 추상적 인 수 없다는 것을 알 수있다. 따라서,이를 기반으로 객체의 생성은 매우 가능하다. 우리는 자바의 예를 고려하면, 우리는 우리가 클래스 A의 생성자를 설명 할 수 있습니다 그러나, 우리가 할 수없는 그들을 사용하는 모델을 구축합니다. 이 상황을 벗어나는 방법은 어떤 변수 참조를 선언하는 것입니다. 그리고 당신은이 방법을 수행 할 수 있습니다 이것은이 클래스 A의 객체를 가리 키도록 명확하게 정의 할 필요가? 이것은 우리가 유치하는 데 도움이됩니다. 그것은 부모 클래스는 항상 후손보다 더 다양한 것으로 간주됩니다 명심해야한다. 많은 프로그래밍 언어에서 자동으로 가져하는 데 사용됩니다. 이러한 메커니즘의 존재에 더 자신감이없는 경우에, 당신은 명시 적으로 객체를 참조해야합니다.
추상 메소드
그들은 무엇입니까? 추상 호출이 클래스에서 구현되지 않습니다 그 방법. 따라서, (내부에 사용되는 인수를 나열) 괄호에 이어 형상 (있어서의 블록 위치 정보 가는데) 개구 만 세미콜론을주지 않는다. 따라서,이 경우, 그것은 무엇에 대한 정보가 없습니다. 여기에 질문을 질문 할 수있다 : "그리고 어떤 방법을 구현하지?" 결국, 그는 사용하지 않을! 물론, 그는 설명했다 교실에서,이 수 없습니다. 우리가 후손의 관점에서 상황을 고려한다면, 그것은 호출 할 수 있습니다. 그리고이 클래스에서 사용할 수있는 특정 기술에 작동합니다.
특징 추상 메소드
그들을 사용에 제한이 있습니다. 의는의 예를 살펴 보자 자바 프로그래밍 언어를. 클래스가 적어도 하나 개의 방법이 있다면, 그것은 추상적해야합니다 요구 사항이 있습니다. 그리고 어떤 경우에 이러한 구성을 사용하는 것이 적절하다? 다음의 예제 클래스 애완 동물이를 이해하자. 그들이 게시 소리가 없다는 것을 이해하기 시작합니다. 따라서, 가장 일반적인 클래스의 방법의 사운드 구현을 설정되어 있지 않습니다. 그러나 생성 된 몸있는 떨어져 그를 위해 블록을 통해. 다음에, 개 클래스, 고양이 또는 햄스터를 작성할 때 프레임 워크에 대한 단일 방법있는 모든 기능을 개시한다을 규정한다.
인터페이스
사람들이 좋은 품질의 제품을 만들 수 있도록 - 프로그래밍에 그 목적 많은 도구를 만들었습니다. 그리고 고려 항목은 이러한 측면에 주어지고, 그 모두가 인터페이스에서 추상 클래스와는 달리 알고해야합니다. 그래서, 마지막 특징은 속성과 메서드가 몸을 정의되지 않을 수 있다는 것입니다. 인터페이스에서 추상 클래스의 차이를 검사하여 특정 하나에 이상을 거주해야한다. 실현된다 - 따라서, 첫 번째 동안 상속된다. 경험이 부족한 사람이 하찮은 것처럼 보일 수 있습니다. 그러나 사실은 단 하나의 클래스를 상속하고, 실현 될 수있다 - 필요한만큼. 즉, 인터페이스는 다른 것입니다 추상 클래스의. 자바는 여전히 공공 방법과 정적 상수 단지 추상적를 설명 할 수있는 기능입니다. 그러나 동일한 인터페이스로도 상속 할 수 있습니다. 사용하는 운영자는 공개를 통해 공공 것을 지적 할 필요가있다.
인터페이스의 다중 상속
이 기능은 (예를 들어, 자바는 우리가 생각) 많은 프로그래밍 언어에서 클래스를 사용할 수 없습니다. 이것은 많은 문제 때문이다. 이러한 모호함이 나타내는 바와 같이 연속적으로 발생하는. 이것은 여러 인터페이스 상속의 도입에 대한 이유였다. 이것은 부분적으로 전부는 아니지만, 기존의 문제를 해결합니다. (그들은 같은 이름을 갖게됩니다 있지만) 그래서, 캡슐화 및 다형성의 원칙 덕분에, 인터페이스는 성공적으로 다양한 방법에 따라 다른 클래스에서 구현 될 수있다. 그러나 기존의 문제에 대해 잊지 마세요. 그래서, 여러 인터페이스로 작업 할 때 항상 우리가 생각하고있는 사람을 지정해야합니다. 또한, 문제가 될 것입니다 그리고 당신은 두 가지 방법으로 이름이 같은 작업을 할 때 -이 경우, 그들은 활용할 수 없습니다. 따라서, 이러한 경우는 전체 매출의 존재를 돌봐하는 것이 필요하다.
추상 데이터
이 개념은 프로그램의 핵심입니다. 이 경우, 독립적 검토의 추상화에서 인터페이스와 구현의 분리를 이해합니다. 의 예를 살펴 보자. 우리는 객체 나 모듈 TV를 보유하고 있습니다. 그것은 인터페이스를 가지고 있습니다. 따라서, 그들은 컨트롤뿐만 아니라 사운드와 이미지입니다. 더 완벽한 인터페이스는 더 편안하게 TV를 사용, 사용됩니다. 우리는 어떤 버튼을 눌러 프로그램 사이를 전환 할 수 있습니다. 이 경우, TV의 물리적 과정에 대해 생각 할 필요가 없습니다. 장치를 수집 그들을 돌봐 전문가. 우리는 사람들이 속성에만 관심이 좋아합니다. 프로그래밍에 반환, 우리는 그들이 유사한 인터페이스와 구현에 있다고 말할 수 있습니다. 사람이 자신의 지식에 자신이있는 경우 또한, 그는 "제거"가상의 TV를 커버하고 그것을 개선 할 수 있습니다. 이 지역의 성공으로 이어질 수 있지만, 대부분의 경우에, 최종 결과는 부정적이다. 따라서, 액세스의 지원 프로그램 금지 및 추상 데이터의 내부 구성 요소를 숨 깁니다. 이 메커니즘의 원리는 내부 구성 요소의 고의 또는 의도하지 않은 조정을 방지 할 수있는 방법을 제공합니다. 그리고 추상 데이터 유형에 대해 이야기 할 때, 그들에 대해 수행 할 수있는 작업의 집합의 집합의 평균.
사물
우리는 이미 일반 및 일반적으로 추상 클래스와 인터페이스를 보았다. 이제 세부 사항에 대한 지식하자. 유료 관심 객체를 시작합니다. 그 다음은, 일반적으로, 시간과 공간에 존재하는 환경 현실을 알고 있습니다. 프로그램 (뷰의 철학적, 이론적 포인트) 어려운 내 그러나 공식적으로 객체를 식별합니다. 따라서, 그것의 특성 때문이다. 예로서, 다음 목적은 고유 (고유 이름)를 식별 할 수 있고, 그 특정 상태에있는 행동의 특정 패턴을 사용한다.
계승
프로그래밍은 객체 사이의 계층 적 트리 관계를 구축을 기반으로하기 때문에, 문제는 부모의 코드 라이브러리의 유형의 기본 속성이 전송 된 사실에 대해 발생합니다. 사람이 하나가 뭔가의 행동과 구조를 반복 할 때 상속에서의 관계를 이해한다. 일상 생활에서는 모든 곳에서 찾을 수 있습니다. 이러한 연기와 상대적으로 추상적 인 요소를 프로그래밍했다. 비교로, 사실은 새처럼 그런 몸이 없다는 것을. 이것은 추상적 인 이름입니다. 특정 인스턴스로 차, 나이팅게일 또는 참새을지도한다. 우리는 클래스 라이브러리를 사용할 수 있습니다뿐만 아니라 특정 프로그램을 개발하기 위해 상속에 감사합니다. 이 도구는 동시에 추가하거나 이미 생성 된의 속성을 변경, 우리가 새로운 객체를 만들 수 있습니다. 후계자는 모든 방법과 자신의 조상의 필드를 얻고, 필요한 경우, 자신의 속성을 획득합니다. 때문에 추상 요소와 유산의 원칙이 있다는 사실, 객체 지향 프로그래밍에서 수정을위한 충분한 기회가있다. 또한, 문제를 해결하는 유연한 접근을 허용한다. 당신은 전송 된 데이터와 기능의 새로운 클래스를 상속합니다.
다형성
이 문제의 종류를 해결하기위한 동일한 기능을 적용 할 필요가있다. 이 경우 다른 행동의 가능성의 존재를 제공에서의 내용은 작업이 완료되어있는 개체의 유형에 따라 달라집니다. 다형성에 따라 다른 방식으로 문제의 의미 론적 의미와 유사한 수행하기 위해, 공통의 부모가 요소의 속성을 이해합니다. 우리는 동물과 비유를 그립니다. 실행 - 작업이 있습니다. 우리 모두는 그런 일이 방법을 알고있다. 그러나 다른 동물 (사자, 코끼리, 침팬지, 악어, 거북이)이 작업은 여러 가지 방법으로 수행됩니다. 이 경우, 자신의 움직임이 필요한 경우는 특별한 경우 특정 루틴, 알고리즘과 성공적으로 구현 될 수 있습니다 책임 개발자이다. 이것은 메소드 세트를 사용하여 수행됩니다. 각 클래스 프로그래머에서 동시에 고유 한 개체 속성을 지정합니다. 자손에 뭔가를 변경,이 경우 특정 원하는 작업을 달성 할 수있다. 이러한 효과는 개체의 다형 불린다. 일반적으로, 추상 클래스는 프로그래밍을위한 매우 유용한 도구입니다.