2016-06-21 4 views
14

나는 기본 추상 Goods 클래스를 가지고 Book 클래스를 상속 받았다.추상 클래스 필드 리던던시 C#

abstract class Goods 
{ 
    public decimal weight; 
    string Title, BarCode; 
    double Price; 
    public Goods(string title, string barCode, double price) 
    { 
     Title = title; 
     BarCode = barCode; 
     Price = price; 
    } 
} 

abstract class Book : Goods 
{ 
    protected int NumPages; 
    public Book(string title, string barCode, double price, int numPages) 
     : base(title, barCode, price) 
    { 
     NumPages = numPages; 
     weight = 1; 
    } 
    public override void display() 
    { 
     base.display(); 
     Console.WriteLine("Page Numbers:{0}", NumPages); 
    } 

} 

내가 작성해야 title, barCode, 두 번 Goods 클래스에 존재 price? 이 번호를 바꿀 수 있습니까?

public Book(string title, string barCode, double price, int numPages) 
     : base(title, barCode, price) 

중복 구조가 덜 있습니까?

+8

메모 만. ** 속성 **이 아닌 ** 필드 **가 있습니다. 속성에는'get' 및/또는'set'이 있어야합니다. –

+6

가격을 표시하려면'double' 대신'decimal' (또는 정수)를 사용하십시오. – CodesInChaos

+4

나는 추상 클래스를 인터페이스로 대체하는 것을 고려할 것이다. – CodesInChaos

답변

17

아니요,이 코드는 중복되지 않습니다. 값을 Book 생성자와 base 생성자에 모두 전달해야합니다.

나는 Book 생성자에 weight을 할당합니다. 원하는 경우 다른 Title, BarCodePrice에 대해서도 동일한 작업을 수행 할 수 있습니다. 그런 다음 Goods 생성자는 비어 있습니다. 그러나 그

+0

이해가 안됩니다. – ifooi

+8

코드가 중복되지 않으므로 생성자를 더 짧게 만들 수 없습니다. 그것이 C# sintax가 보이는 방법입니다. –

+0

좋습니다, 고마워, 나는 더 많은 것을 배울 것이다. getter/setter 예제. – ifooi

2

내가 제목을 작성해야 .. Goods의 각 구현 (자세한 논리 후 간단한 할당이 있으면 나쁜 일이 될 것)을해야 할 것이라는 점을 의미 할 것입니다, 바코드, 1 가격에 존재하는 상품 클래스 두 번? 대체 할 수 있습니까? 적은 중복 구성으로 교체 할 수 있습니까?

이 코드에는 아니요 "중복"이 없습니다.

이것은 생성자 [메소드]의 선언이며, 취할 인수를 지정합니다.

public Book(string title, string barCode, double price, int numPages) 

생성자에 전달 된 인수를 전달, 기본 클래스 '생성자의 호출이다. 당신의 기본 클래스는 세 개의 인수를 제공하는 생성자를 사용하여 을 구축 할 수 있기 때문에

: base(title, barCode, price) 

이 절대적으로 필요하다. 당신은

: base(title, barCode, priceDerivedFrom(title, barCode)) 

(예 : 함수 기능이 희망 작동하지만 얼마나 확실하지, 당신이 볼에로, 그 (것)들을 파생시켜, 중 가능성이 생성자에 전달 된 인수 또는에서, 이러한 인수를 제공하기 위해이 내 포인트).

+0

감사합니다. Invocaton. 나는 다른 대답을 이해했지만 감사합니다! 단어 호출. – ifooi