【发布时间】:2011-11-20 17:03:03
【问题描述】:
这里没有问题,只需要解释它是如何工作的。
我正在为我的 C# 课做作业,我按照我们教授提供的代码示例设法自己完成了作业。问题是我不明白它是如何工作的。以下是让我感到困惑的事情:
首先,我为什么需要使用xmlBook.Title = "XML Primer Plus";而不是Book clrBook = new Book("CLR via C#", ...")作为构造函数,反之亦然。
二、为什么我在使用: base()的时候不用带参数?
第三,使用new public void display()覆盖,如何只增加输出,而不是完全修改原来的protected void display()?我猜是因为原始的diplay() 受到保护?
请澄清
问候。
Main.cs
using System;
namespace Lab_4
{
class Program
{
static void Main(string[] args)
{
Book xmlBook = new Book();
xmlBook.Title = "XML Primer Plus";
xmlBook.AuthorFirstName = "Nicolas";
xmlBook.AuthorLastName = "Chase";
xmlBook.Price = 44.99F;
xmlBook.PublisherName = "Sams Publishing";
Book clrBook = new Book("CLR via C#",
"Jeffrey",
"Richter",
59.99f,
"Microsoft Press");
Console.WriteLine("=== xmlBook ===");
xmlBook.display();
Console.WriteLine();
Console.WriteLine("=== clrBook ===");
clrBook.display();
}
}
}
Publication.cs
using System;
namespace Lab_4
{
public class Publication
{
string publisherName, title;
float price;
public Publication()
{
}
public Publication(string title,
string publisherName,
float price)
{
Title = title;
PublisherName = publisherName;
Price = price;
}
public float Price
{
set
{
price = value;
}
}
public string PublisherName
{
set
{
publisherName = value;
}
}
public string Title
{
set
{
title = value;
}
}
protected void display()
{
Console.Write("{0}\n{1}\n{2}\n", title, publisherName, price);
}
}
}
Book.cs
using System;
namespace Lab_4
{
public class Book : Publication
{
string authorFirstName, authorLastName;
public Book()
{
}
public Book(string bookTitle,
string firstName,
string lastName,
float bookPrice,
string publisherName)
: base()
{
Title = bookTitle;
AuthorFirstName = firstName;
AuthorLastName = lastName;
Price = bookPrice;
PublisherName = publisherName;
}
public string AuthorFirstName
{
get
{
return authorFirstName;
}
set
{
authorFirstName = value;
}
}
public string AuthorLastName
{
get
{
return authorLastName;
}
set
{
authorLastName = value;
}
}
new public void display()
{
base.display();
Console.WriteLine("{0}", getAuthorName());
}
string getAuthorName()
{
return AuthorFirstName + " " + AuthorLastName;
}
}
}
【问题讨论】:
标签: c# inheritance constructor