c#带参数的抽象方法怎么实现?
像这个,我该怎么实现红框中的抽象方法?这是一道题目要求:这个类的起名叫动物,有一个Name属性,这说明,每个动物都有一个自己的名称,就像人,有人叫张三,有人叫李四,只是个...
像这个,我该怎么实现红框中的抽象方法?
这是一道题目
要求:这个类的起名叫动物,有一个Name属性,这说明,每个动物都有一个自己的名称,就像人,有人叫张三,有人叫李四,只是个代号而已
有一个Firends的属性,起名是朋友,复数,表示每个动物都有许多朋友
所以,就有了一个FriendCount的属性,返回朋友的个数, 既然每个动物都有许多朋友,那么朋友怎么来?既然有个朋友数量,说明朋友的个数是允许变化的,而不是固定不变的,这里,我们就要想到需要一个对象来存放它的朋友,朋友既然是只读的,但又是可变的,所以,就可以肯定一定有接口来增加或减少朋友,所以才有了新增和移除朋友,并支持一次清除所有朋友,因为一个人的朋友不可能一开始就有很多而且衡定不变。 展开
这是一道题目
要求:这个类的起名叫动物,有一个Name属性,这说明,每个动物都有一个自己的名称,就像人,有人叫张三,有人叫李四,只是个代号而已
有一个Firends的属性,起名是朋友,复数,表示每个动物都有许多朋友
所以,就有了一个FriendCount的属性,返回朋友的个数, 既然每个动物都有许多朋友,那么朋友怎么来?既然有个朋友数量,说明朋友的个数是允许变化的,而不是固定不变的,这里,我们就要想到需要一个对象来存放它的朋友,朋友既然是只读的,但又是可变的,所以,就可以肯定一定有接口来增加或减少朋友,所以才有了新增和移除朋友,并支持一次清除所有朋友,因为一个人的朋友不可能一开始就有很多而且衡定不变。 展开
3个回答
推荐于2016-02-17
展开全部
public override void Add(Animal friends)
{
//
}
public override void Remove(Animal frends)
{
//
}
继承的话是这样继承,实现的话不知道你这个抽象类是实现什么效果,链表吗?
更多追问追答
追问
继承我会的,但是要实现里面的方法。不需要链表,只要实现就好了,能看出效果就行了。
追答
你这样设计的Friends
public abstract Animal[] Friends { get; }
这样Friends数组类型还是只读还怎么添加(add)或者删除(Remove)?
这个类的设计就是有问题,你要实现什么效果?add是添加什么东西
展开全部
继承类里面 把abstract 改成override
比如:
class Dog:Animal
{
//.......
public override void Add(Animal firend)
{
}
}
比如:
class Dog:Animal
{
//.......
public override void Add(Animal firend)
{
}
}
更多追问追答
追问
为什么你们都关注继承,,,我问的是怎么实现里面的方法,继承我会的。
追答
你是要给你写add方法的具体实现代码?
搞笑,你的需求是什么,什么都不说谁知道你方法要做什么。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
c# 抽象类和抽象方法实现
抽象类(abstract)
abstract修饰符可以和类、方法、属性、索引器及事件一起使用。
1、抽象类不能被实例化。
2、抽象类可以包含抽象方法和抽象访问器。
3、抽象类不能用sealed修饰符,此修饰符会阻止其他类从该类继承。
4、抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实现。
5、抽象方法不能为私有的。
6、抽象方法必须声明在抽象类中。
7、抽象方法中不能含有方法体,只能在派生类中重写方法主体。
8、抽象方法声明中不能使用static和virtual修饰符。
9、派生类中重写该实现,必须添加关键字override。
abstract class count_adstract //抽象类
{
protected string A;
protected string B;
protected count_adstract(string a, string b)
{
A = a;
B = b;
}
public abstract string count_adstract_method(); //抽象方法
}
class Count : count_adstract
{
public Count(string a, string b) : base(a, b) { }
public override string count_adstract_method() //方法重写
{
return A + B;
}
class Program
{
static void Main(string[] args)
{
Count c = new Count("sss", "ddd");
Console.WriteLine(c.count_adstract_method());
Console.ReadKey();
}
}
}
抽象类(abstract)
abstract修饰符可以和类、方法、属性、索引器及事件一起使用。
1、抽象类不能被实例化。
2、抽象类可以包含抽象方法和抽象访问器。
3、抽象类不能用sealed修饰符,此修饰符会阻止其他类从该类继承。
4、抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实现。
5、抽象方法不能为私有的。
6、抽象方法必须声明在抽象类中。
7、抽象方法中不能含有方法体,只能在派生类中重写方法主体。
8、抽象方法声明中不能使用static和virtual修饰符。
9、派生类中重写该实现,必须添加关键字override。
abstract class count_adstract //抽象类
{
protected string A;
protected string B;
protected count_adstract(string a, string b)
{
A = a;
B = b;
}
public abstract string count_adstract_method(); //抽象方法
}
class Count : count_adstract
{
public Count(string a, string b) : base(a, b) { }
public override string count_adstract_method() //方法重写
{
return A + B;
}
class Program
{
static void Main(string[] args)
{
Count c = new Count("sss", "ddd");
Console.WriteLine(c.count_adstract_method());
Console.ReadKey();
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询