簡體   English   中英

調用重寫方法

[英]Calling overridden method

下面顯示了我的3個類: PersonEmployeeSalaryEmployee

每個類(從右側)從左側繼承該類。 例如: SalaryEmployee繼承自Employee

class Person
{
    private string address;
    private string name;

    public Person(string givenName, string givenAddress)
    {
        name = givenName;
        address = givenAddress;
    }

    public virtual void outputName()
    {
        MessageBox.Show("My name is " + name);
    }

    public void outputAddress()
    {
        MessageBox.Show("My address is " + address);
    }

    public void setName(string newName)
    {
        name = newName;
    }

    public void setAddress(string newAddress)
    {
        address = newAddress;
    }
}

class Employee : Person
{
    private string NINumber;

    public Employee(string givenName, string givenAddress) : base(givenName, givenAddress)
    {
    }

    public void setNINumber(string givenNumber)
    {
        NINumber = givenNumber;
    }

    public void getNINumber()
    {
        MessageBox.Show("My National Insurance Number is " + NINumber);
    }
}

class SalaryEmployee : Employee
{
    private string name;
    private string address;

    public SalaryEmployee(string givenName, string givenAddress) : base(givenName, givenAddress)
    {
        name = givenName; address = givenAddress;
    }

    public override void outputName()
    {
        MessageBox.Show("My name is " + "S_" + name);  
    }
}

OOP對我來說是相當新的,我試圖獲得繼承權。 我面臨的問題是我創建了一個名為'PersonFive'的對象:

SalaryEmployee personFive = new SalaryEmployee("Bob", "North Pole");

//忽略我用作參數的地址'北極',它僅用於此示例。

我能夠調用.outputName()方法,輸出將是:

"My name is Bob"

但是,調用基本方法而不是重寫方法。 我希望它給我的輸出是“我的名字是S_Bob”

它對我有用,你可能沒有發布導致錯誤的實際代碼。

代碼輸出

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM