2010-02-16 4 views
0

나는이 시나리오가Abstract 수업은 좋은 습관입니까? 이 속성에</p> <p>이 두 clases :

  • 표 [ID, 이름, PARENT_ID]
  • 필드 [ID, 이름, CREATION_TIME을 CREATION_DATE]을

ID 및 NAME에 대한 속성 및 속성을 구현하기 위해 추상 클래스를 작성하여 코드를 작성하는 시간을 절약하는 것이 좋습니다. 또는 각 클래스의 각 속성 및 속성을 다시 작성하는 것이 더 낫습니까? 또는 인터페이스를 사용할 수 있습니까?

감사합니다.

+1

dupe : http://stackoverflow.com/questions/56867/interface-vs-base-class –

+0

나는 그것이 중복이라고 생각하지 않는다. 그의 질문은 더 구체적이다. 나는 다른 질문이 정말로 그의 질문에 어떻게 대답 하는지를 보지 못했다. 나는 그것이 도움이되는 것을 의미하지만 모든 방법을 의미하지는 않습니다. –

답변

2

선택의 여지가 없다고 생각합니다. 추상 클래스를 사용하는 경우, 누군가가 추상 클래스에서 상속받은 클래스를 볼 때 해당 정보가있는 곳을 발견하는 데 어려움을 겪을 수 있습니다. 아마도 상속에 대한 최악의 부분 일 것입니다. 상속 사슬에서 클래스의 중요한 세부 사항을 숨기는 것입니다.

인터페이스는 클래스가 준수해야하는 계약의 일종으로, 일반적으로 다른 메커니즘에 의해 사용될 수 있습니다. 훌륭한 예제는 반복자입니다. 그런 클래스는 일반적으로 "다음"메소드가 필요합니다. 클래스의 인스턴스가 "다음"메소드를 필요로하는 인터페이스에 등록하면 클래스의 인스턴스를 반복 할 수 있습니다. 그런 식으로 인스턴스를 반복하려는 메커니즘이 제대로 작동하는지 알 수 있습니다. 그것이 당신이하고 싶은 일에 대해 이해가되지 않는다면 아마도 이것을 사용하지 마십시오.

+0

답장을 보내 주셔서 감사합니다. 저는 100 % 동의합니다. 나는 내 결정에 확신이 없으므로 여기에 게시했습니다. 감사. – lidermin

0

하위 클래스는 상위 클래스와 "is a"관계가 있어야합니다. 테이블과 필드는 상속을 피하는 다른 엔티티처럼 보입니다. 그러나 다른 한편으로는 공통 속성을 구현하는 DatabaseObject와 같은 공유 기본 클래스를 가질 수 있습니다. 그러나 이것이 너무 인공적인 것으로 보인다면, 나는이 간단한 경우에 상속을 피할 것입니다.

+0

안녕하십니까, 전 당신과 완전히 동의했습니다.이 문제는 제 직무에서 비롯된 것이며, 웹에서 검색 한 후에 정답을 찾지 못했습니다. 그래서 여기에 게시되었습니다. 나는 당신과 같은 생각으로 상속을 피합니다. 감사. – lidermin

0

당신이 그것을 사용할 수있는 couse의 코드 repitition의 문제를 해결하려는 경우.

논리면에서 사용할 수있는 경우, 모든 클래스가이 abstarct 클래스를 확장한다고 생각하면 공통성을 가져야합니다.