最赞回答 / qq_慕侠5280997
我在收看的教程视频是,把代码也给敲出来了,里面有相应的注释,分享一下吧using System;using System.Globalization;using System.Net.Cache;namespace PetShop{ interface ICatchMice //基类中接口的定义 { void ICatchMice(); } interface IClimbTree //基类中接口的定义 { void IClimbTree(); ...
2019-11-22
最新回答 / 慕数据8441107
首先,你要清楚的是,接口声明不包括数据成员,只能包含方法、属性、事件、索引等成员。接口中属性声明比如:int x { get; set; }//声明属性存取规则其中get { return _x; }set { _x=x; },在继承接口的类中实现。###int前不能用修饰符,比如public prodected,接口默认访问级别是public .
2019-08-31
最新回答 / 青松_Qson_cn
abstract public class Pet { protected string _name; public Pet(string name) { _name = name; } public void printName() { Console.WriteLine("Pet name is: "+ _name); } // virtual public voi...
2019-08-27
最新回答 / qq_慕设计9574980
不同动物的cage的属性不一样,因此类的数据结构就不会一样啊,不一样的话就不能通用一个cage类,每次都需要重新写一个适用不同动物的cage类,你可以写一个cage基本类,包含了他们cage的基本共同属性,但是针对于更加细节的属性就需要继承,因此泛型就有优势了。
2019-08-13
最新回答 / qq_慕侠5280997
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApp8{ public class Pet { public Pet(string name, uint age, string food) { _name = name; ...
2019-08-01
最新回答 / 日安因心
之所以会用到default关键字,是因为需要在不知道类型参数为值类型还是引用类型的情况下,为对象实例赋初值。考虑以下代码:class TestDefault<T> { public T foo() { T t = null; //??? return t; } }如果我们用int型来绑定泛型参数,那么T就是int型,那么注释的那一行就变成了 int t = null;显然这是无意义的。为了解决这一...
2019-07-24
最新回答 / 慕数据8441107
接口是一种规范,使得别人在实现接口的时候需要完成接口中那未实现的方法,普通类一旦实现接口就必须完成接口内所有未实现的方法,但是可以通过别的方式只去实现部分方法。可以建一个抽象类,让抽象类去实现接口中的方法(在抽象类中,接口中的方法变成非抽象方法),最后让你那个普通类去继承抽象类,这样就可以只实现你想实现的函数方法了。(因为在普通类继承抽象类时,可以只实现抽象类中部分非抽象方法,不需要全部实现,不过抽象类中如果有抽象方法,抽象方法必须实现)还不明白,可以百度一下
2019-07-21
最赞回答 / qq灰色记忆
隐藏方法有它的适用场景,比如说某个父类中的方法在子类中不需要了,那么你可以直接给隐藏掉,并没有说一定要在子类中隐藏父类的方法,而是隐藏,隐藏根据实际需要,选择继承、重写或者隐藏。这就和坐公交打卡和手机支付可以同时存在,虽然你平时用不到公交卡,但是你需要用公交卡的时候你可以用。隐藏只是一种继承方式,并不是继承就必须要隐藏,希望你理解
2019-06-30
最赞回答 / 眉眉眉
class Pet { interface Iclimbtree { void climbtree(); } interface Icatchmice { void catchmice(); } public Pet(string name) { Name = name; } protected string Name; virtual public void printf() { Console.WriteLine(Name); } public clas...
2019-06-23
最赞回答 / 慕慕0266592
public Dog(string name).base(name)这句话可以理解成,派生类构造函数的参数传进来,丢给base(),基类构造函数拿到这个参数,进行构造;所以不能不写
2019-04-28
最赞回答 / 慕虎4119789
按照原本的事件发生方式,先定义委托,然后定义事件,再判断事件是否触发(即是否发生),最后再执行订阅或取消订阅事件。前面声明了两个客户,然后有Dog.NewDog += c1.WantDog,这里的意思应该是先判断NewDog是否为空,即商店有没有新狗狗,然后在再根据客户的消息WantADog订阅事件。而第二个注册事件是先判断有没有WantDog(但是老师写事件触发条件时候并没有写客户有没有WantDog,而是写的NewDog!=null)。因为按照逻辑是先看有没有新狗,再看有没有客户想要。而这样改变的话,...
2019-03-29