के बारे में मेरे पास एक सैद्धांतिक/प्रैक्टिकल सवाल है कि सी # में विरासत कैसे काम करती है।सी # और विरासत
मान लें कि मुझे कुछ ऑटो मॉडल करना है, इसलिए मेरे पास कुछ सामान्य तरीकों हैं जो सभी ऑटो को लागू करना चाहिए और एक पायलट को पता होना चाहिए।
interface Automobile {
void speedup();
void break();
void steer();
//bla bla
}
अब, कार के सभी प्रकार है कि एक पायलट उन पर प्रदर्शन कर सकते हैं कार्यों के बगल में कुछ सामान्य तकनीकी कार्यान्वयन होना चाहिए, मान लें कि संपत्ति fuelLevel करते हैं, इस बिंदु मैं कम से: कोड-शब्दों में यह एक अंतरफलक होना चाहिए अभी भी पता है कि कैसे एक कार को गति या टूट जाती है नहीं करना चाहते, तो मैं लिखा होगा:
abstract class Car : Automobile {
int fuelLevel; // for example....
public abstract void speedup();
public abstract void break();
public abstract void steer();
}
अब मैं एक फेरारी मॉडल बनाना चाहते हैं, तो:
class Ferrari : Car {
public void speedup() { ... }
public void break() { ... }
public void steer() { ... }
}
अब, जावा इस में कोड शू एलडी काम (कुछ वाक्यविन्यास बदलना), लेकिन सी # में ऐसा नहीं होगा क्योंकि यह कहता है:
Error 1 'Ferrari' does not implement inherited abstract member 'Car.speedup()'
Error 1 'Ferrari' does not implement inherited abstract member 'Car.break()'
Error 1 'Ferrari' does not implement inherited abstract member 'Car.steer()'
क्यों? मुझे इस समस्या को कैसे ठीक करना चाहिए? आप तैयार हैं
class Ferrari : Car
{
public override void speedup() { }
public override void break() { }
public override void steer() { }
}
उसके अलावा, - Ferrari
वर्ग अपने इंटरफेस को पूरा करेगा, भले ही तरीकों प्राप्त कर रहे हैं:
के माध्यम से मुझे लगता है कि होना चाहिए यह जावा और सी # के बीच मतभेद में से एक है ... बहुत बहुत शुक्रिया। – IssamTP
@ amod0017 हो गया। देर से खेद है, लेकिन मैं यहाँ 7 मिनट इंतजार करने में काफी व्यस्त हूं ... – IssamTP
@IssamTP वास्तव में साइट पर समय के अनुसार, मुझे केवल जवाब देने में 3 मिनट लगे :-) –