永发信息网

帮忙解释一下这段C#代码。

答案:2  悬赏:70  手机版
解决时间 2021-04-26 14:53

using System;
using System.Collections.Generic;
using System.Text;

namespace text2
{
class Program
{
static void Main(string[] args)
{
NewBook MyNovel = new NewBook("China", "Ro", 500);
MyNovel.ShowBook();
}
//定义接口
public interface IBook
{
void ShowBook();
string GetTitle();
int GetPages();
void SetPages(int pages);
}
//继承接口
public class NewBook : IBook
{
public string title;
public int pages;
public string author;

public NewBook(string title, string author, int pages)
{
this.title = title;
this.author = author;
this.pages = pages;
}
public string GetTitle()
{
return title;
}
public int GetPages()
{
return pages;
}
public void SetPages(int pages)
{
this.pages = pages;
}
public void ShowBook()
{
Console.WriteLine("Title:{0}", title);
Console.WriteLine("Author:{0}", author);
Console.WriteLine("Pages:{0}", pages);
}
}
}
}
代码的思想 流程。

最佳答案

这是一个简单的输出:


首先创建NewBook类


并创建相关字段和属性


接着创建一个带有参数的构造函数。


又因为他继承了一个接口。


那么。接口里的方法必须在继承类里面全部实现。




我个人的一点疑问。这个代码如果是为了练习接口的话。那已经OK了。如果是项目里出现。我觉得完全没必要做个接口然后去继承并实现吧

全部回答

首先定义了一个书的接口,里面定义了书的方法和属性签名。你可以将Main方法的代码改为:

static void Main(string[] args) { IBook book = new NewBook("China", "Ro", 500); book.ShowBook(); }

因为NewBook类实现了接口IBook,所以可以将一个NewBook类型的实例赋给一个 IBook类型的变量,这样做有好的封装特性。book不用关心NewBook的内部实现,其实也关心不了,因为book除了NewBook类中实现IBook的方法和属性,其它的它都看不到。当然,NewBook类中也可以定义其它的方法,但都是为了实现接口而服务。如果不是的话,也是浪费,因为book没有访问其它成员的权限。这就是面向接口编程,如果把

IBook book=new NewBook(...);改为IBook book=Activator.CreateInstance(..);然后从配置文件获取你要实力化的类型,当然这个类型必须要实现IBook接口。

这样做的好处是,一旦有新书,直接在配置文件里修改新书的类型,而不用去修改已经做好的客户端代码。遵守“开放封闭原则”(开放扩展,封闭修改)。你会体会到它的好处的。

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
怎么才能以最短的时间绕地球一圈,回到原来的
asp.net 统计数据库中其中一个子段的个数问题
星舞之尘
q宠钥匙,宝箱(金银铜)交换,加我
龙之旅旅行社票务中心在什么地方啊,我要过去
从一台机器下到一半的文件到另一台机器可以接
问道捉迷藏什么时候开啊?
请问温特沃斯 爱尔 米勒 三世(Wentworth Ear
佳能MP486废墨满
想买关于甲骨文的工具书,哪家书店有价钱大概
中国环境管理干部学院的住宿情况,是上住下习
【急】《戈麦诗全编》哪有卖的?
三亚哪里有比较好的服饰店?地址?
七里河区惠杰便利店在什么地方啊,我要过去处
中国邮政霞坑邮政支局这个地址在什么地方,我
推荐资讯
爱情的思念诗句经典,时间思念的句子
上大学了、须要做什么
永城市哪有花店
谁有九年级英语新目标1~15单元3a的课本录音?
联通的流量不够用怎么办
格度 马克华菲 重庆有售店没有
360保险箱问题
证券经纪人有前途吗?
新世贸大酒店地址有知道的么?有点事想过去
怎样才能简简单单的过每一天?
为什么默认进个人中心与webqq显示设置失败?
梦幻 风带加的速度是暗的还是明的?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?