ठीक है, मेरे साथ लड़कों और लड़कियों के साथ भालू जैसा मैं सीख रहा हूं। मेरा सवाल यहाँ है।ओवरराइडिंग और विरासत के साथ सहायता
मुझे पता नहीं लगा सकता कि मैं अभिभावक वर्ग से किसी विधि को ओवरराइड क्यों नहीं कर सकता। बेस क्लास से कोड यहां दिया गया है (हां, मैंने ओओपी बुक से जावा कोड को पायलट किया है और इसे सी # में फिर से लिखने की कोशिश कर रहा हूं)।
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
public class SadObject: MoodyObject
{
protected String getMood()
{
return "sad";
}
//specialization
public void cry()
{
Console.WriteLine("wah...boohoo");
}
}
}
और::
using System;
public class MoodyObject
{
protected String getMood()
{
return "moody";
}
public void queryMood()
{
Console.WriteLine("I feel " + getMood() + " today!");
}
}
और यहाँ मेरे अन्य 2 वस्तुओं है कि आधार वर्ग (MoodyObject) के वारिस हैं
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
public class HappyObject: MoodyObject
{
protected String getMood()
{
return "happy";
}
public void laugh()
{
Console.WriteLine("hehehehehehe.");
}
}
}
और यहाँ अपने मुख्य है:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
MoodyObject moodyObject = new MoodyObject();
SadObject sadObject = new SadObject();
HappyObject happyObject = new HappyObject();
Console.WriteLine("How does the moody object feel today?");
moodyObject.queryMood();
Console.WriteLine("");
Console.WriteLine("How does the sad object feel today?");
sadObject.queryMood();
sadObject.cry();
Console.WriteLine("");
Console.WriteLine("How does the happy object feel today?");
happyObject.queryMood();
happyObject.laugh();
}
}
}
जैसा कि आप देख सकते हैं, सुंदर मूलभूत सामान, लेकिन एच ere का आउटपुट:
मूडी ऑब्जेक्ट आज कैसा महसूस करता है? मुझे आज मूडी लग रहा है!
दुखद वस्तु आज कैसा महसूस करती है? मैं आज मूडी महसूस करता हूँ! वाह ... बूहू
खुश वस्तु आज कैसा महसूस करती है? मुझे आज मूडी लग रहा है! hehehehehehe। जारी रखने के लिए कोई भी कुंजी दबाएं। । ।
नहीं के रूप में मैं उम्मीद थी। मैंने मूल विधि वर्चुअल बनाने और इसे ओवरराइड करने का प्रयास करते समय ओवरराइड करने का प्रयास किया है और यह मुझे यह त्रुटि प्राप्त करता है "विरासत सदस्य" MoodyObject.getMood() 'को ओवरराइड नहीं कर सकता क्योंकि यह वर्चुअल, सार, या ओवरराइड चिह्नित नहीं है "। मैंने आभासी और ओवरराइड के बिना भी कोशिश की और ऐसा लगता है कि मैं बेस विधि को छिपाने की कोशिश कर रहा हूं। फिर, मैं ओओपी के लिए नया हूं और किसी भी मार्गदर्शन की सराहना करता हूं।
जोड़ने के लिए संपादित: मैं यह मिल गया! "ConsoleAplication1" आइटम के विपरीत समाधान खोजकर्ता में MoodyObject.cs केवल "समाधान आइटम" था। मैंने इसे नीचे खींच लिया जहां यह समाधान एक्सप्लोरर और वॉयला में था! यह अब काम करता है। मैंने जवाब के रूप में नीचे ल्यूक का जवाब चिह्नित किया क्योंकि उसने उस सहायता की पेशकश की जहां मुझे यह हल करने के लिए आवश्यक था ... मैं यहां बहुत कुछ सीख रहा हूं। यह आश्चर्यजनक है और आप लोग और लड़कियां पागल स्मार्ट हैं!
एक स्वीकार किए जाते हैं के रूप में मेरा उत्तर अंकन के लिए धन्यवाद, लेकिन मैं सुझाव है कि हो सकता है कि आप (जैसे इल्या या जोश के रूप में) मेरा एक से थोड़ा कम वर्बोज़ और साथ में अधिक जानकारी चुनें? –
जैसा आप चाहें धन्यवाद फिर से ल्यूक – GregD