2013-11-24 2 views
2

Abstract 클래스의 인스턴스를 만들 수 없으며 Abstract 클래스의 서브 클래스는 첫 번째 Abstract 클래스의 속성을 상속받을 수 있지만 정상적인 Super 클래스와 해당 클래스가있을 때 추상 클래스가 모두 필요하다는 것을 알지 못합니다. 하위 클래스. Abstract 클래스의 이점/애플리케이션은 무엇입니까?추상 클래스의 사용/응용이란 무엇입니까?

+0

객체 지향 프로그래밍의 이점은 무엇입니까? –

+0

물어보기 전에 먼저 시도해 보는 것의 이점은 무엇입니까? – hexafraction

+0

나는 끝냈다. 당신 튜브에 대한 몇 가지 비디오를 보았습니다. 그냥 추상 클래스가 아니라 일반 클래스에 비해 응용 프로그램을 말해. – user3013144

답변

1
abstract class Animal { } 
class Dog extends Animal { } 
class Cat extends Animal { } 

Animal을 인스턴스화 할 수 있다면 무엇이 될까요?

수퍼 클래스가 인스턴스화되지 않아야하는 경우 abstract 클래스를 사용해야합니다. 클래스를 확장하는 데 기본으로 사용되지만 자체적으로 아무 의미도 없습니다. Animal 클래스를 가짐으로써

는 모든 서브 클래스에서 다시 정의 할 필요없이이 대신에 일반적인 동작을 정의 할 수 있습니다, DogCat에 대한의 base class 역할을합니다. Name, SpeciesFirstSighting과 같은 속성에 대해 생각하십시오. 이들은 CatDog에서 모두 사용되므로 추가 작업과 불일치 문제를 피하기 위해 기본 클래스에 넣지 않으시겠습니까?

다른 한편으로는 Animal을 새로 만들지 않고 동물의 유형에 대해서는 아무 것도 말하지 않습니다. 그것이 당신이 그것을 abstract로 만드는 이유입니다.

+0

downvotes 무엇입니까? –

+0

Animal 클래스는 아무 쓸모가없는 한 추상화 여부에 관계없이 전혀 존재할 권리가 없습니다. –

+1

동물은'name','species','first sighting' 등과 같은 특정 속성을 포함 할 수 있습니다. 모든 하위 클래스에서 이것을 다시 정의하겠습니까? –

0

추상 클래스/인터페이스의 주된 목적은 문제 - 디자인의 추상화를 모델링하는 것입니다. 실제 구현은 추상에 따라 동작합니다.

3

추상 클래스는 "불완전한"추상 구현이 인스턴스화되는 것을 방지합니다.

예를 들어, 추상 클래스는 구현없이 추상 메소드를 가질 수 있습니다. 실제로 그러한 메소드를 호출하는 것은 유효하지 않습니다.

또는 추상 클래스는 실제 추상 메서드가 없을 수도 있지만 여전히 유용하기 때문에 하위 클래스 API에 추가 기능을 추가 할 것으로 예상 될 수 있습니다.

abstract 키워드는 모두 &이 추상 클래스의 인스턴스화를 방지하는 이러한 이유로 사용됩니다.