2014-09-28 3 views
1

스프레드 시트라는 상속 클래스에서 Cell이라는 추상 기본 클래스에서 객체를 인스턴스화하는 방법을 찾아야합니다. 어디에서나 나는 사람들이 할 수 없다고 말하지만, 숙제의 일환으로 그것을해야합니다. 특히 부모 클래스를 추상적으로 만들 수는 없다고 말합니다. 여기 상속 클래스에서 추상 클래스 객체 인스턴스화

이 숙제에서 정확한 인용입니다 : 다시

, 당신은 실제로 스프레드 시트 세포를 만들 수있는 힌트가 이 작업을 수행하는 방법에 대해 이전에 있었다 여기에 디자인을 마련 할 필요가 . 공개적으로 선언 된 셀 클래스는 비 추상 (abstract)이 아닌 으로 만들 수 없습니다.

내가 생각할 수있는 유일한 힌트는 상위 클래스가 public abstract이고, 상속 클래스는 공용 클래스이며 둘 다 같은 DLL에 있다는 것입니다.

누구든지 아이디어가 있습니까?

편집 : (추가 정보) 스프레드 시트 클래스는 셀의 2 차원 배열을 유지하기로되어 있습니다. 따라서이 2 차원 배열을 생성하려면 셀 객체를 만들고 2 차원 스프레드 시트 배열의 해당 색인에 넣어야합니다. 유일한 문제는 세포 클래스가 추상이기 때문에 우리가 어떤 세포도 만들 수 없다는 것입니다. 그렇다면 어떻게 세포를 만들어 배열에 넣을 수 있습니까?

+0

내가 묻는 질문에 대해 숙제에 아무것도 표시되지 않습니다. 다르게 설명하거나 세부 사항을 추가 할 수 있습니까? 그것은 서면으로 의미가 없기 때문입니다. –

답변

2

즉, Cell을 기본 클래스로 사용해야하며 상속하는 클래스에 최소한 구현이 필요함을 의미합니다.

이 숙제는 축구 용어로 "hospital pass"이라고 불리는 것 같습니다. SpreadsheetCell에서 상속해서는 안됩니다.

Cell myCell = new MyDerivedCell(); 

을 봐라, 당신은 추상 클래스의 인스턴스 (추상 클래스는 인스턴스를 직접 생성 할 수없는)을 가지고 : 당신이 당신의 파생 클래스를 작성한 후에는 어떤 경우

당신은이 작업을 수행 할 수 있습니다.

이 장점은 일반 셀 기능의 대부분을 Cell에 넣은 다음 Cell의보다 특수한 파생어에 대해 재정의해야 할 일부 메서드 나 속성을 지정할 수 있다는 것입니다.

+0

죄송하지만이 문제가 좀 있습니다. 그래서 Cell 클래스의 abstract 속성을 만들었고 lclass라는 추상 클래스를 오버라이드 한 다른 클래스를 선언했습니다. 그러나 셀 클래스 생성자를 사용하여 셀을 만들지 않으면 작동하지 않습니다. 기본적으로 내가 원하는 것은 'ICell cell = new ICell (i, j)'와 같지만 생성자가 설정해야하는 값은 추상 기본 클래스에서 private입니다. 개체를 만들기 위해 파생 클래스를 통해 추상 기본 클래스 생성자를 호출 할 수있는 방법이 있습니까? – killermist

+1

예, [* base *] (http://msdn.microsoft.com/en-us/library/hfw7t1ce.aspx) 키워드를 파생 클래스의 ctor 정의의 일부로 사용하여 생성자를 연결할 수 있습니다. (그 링크를 따라 가면 모든 것이 설명됩니다). – slugster

관련 문제