一、继承存在的问题
什么时候偶使用继承,什么时候使用对象组合?
public interface IColor
{
string ShowColor();
}
public class White:IColor
{
public string ShowColor()
{
return "白色";
}
}
public class Black : IColor
{
public string ShowColor()
{
return "黑色";
}
}
public class Red : IColor
{
public string ShowColor()
{
return "红色";
}
}
public abstract class Car
{
public IColor color;
public Car(IColor color)
{
this.color = color;
}
public abstract void Run();
}
public class QYCar : Car
{
public QYCar(IColor color):base(color)
{
}
public override void Run()
{
Console.WriteLine($"{this.color.ShowColor()}的汽油车在行驶。");
}
}
二·、组合和聚合、依赖
三、类之间的六种关系
泛化、实现、组合、聚合、关联、依赖
public class Animal
{
private char _gender;
public void Eat()
{
Console.WriteLine("吃饭");
}
public void Sleep()
{
Console.WriteLine("睡觉");
}
}
public class Teger:Animal
{
private string Name;
}
2.实现
public interface IClimb
{
void Climb();
}
public class Teger:Animal;IClimb
{
private string Name;
public void Climb()
{
Console.WriteLine("老虎爬树");
}
}
3.组合
组合是把部分作为整体类的对象。has a
public class Leg
{
private _count;
}
public class Teger:Animal;IClimb
{
private string Name;
private Leg _leg;
//组合关系是强拥有关系,个体/部分不存在生命周期,个体/部分与整体的生命周期保持一致
public Tiger(Leg leg)
{
this._leg=leg;
}
public void Climb()
{
Console.WriteLine("老虎爬树");
}
}
4.聚合
聚合也是整体与部分的关系,是弱拥有关系,但是个体有独立的生命周期,聚合是把个体对象的指针(引用)作为整体类对象的属性。 has a
public class TigerGroup
{
//聚合关系,是弱拥有关系
private Tiger[] tigers;
}
5.关联关系
关联也是一种拥有关系,它是一个类知道另一个类的属性和方法,是需要了解、知道的关系。has a
public class Food
{
public string FoodName;
public string FoodClor;
}
public class Tiger
{
private Food food;
}
6.依赖关系
是一种使用关系。 use a
(语法层面上有把water写成接口、set、构造函数的参数三种依赖关系)。
public class Water
{
private float _weight;
}
public class Tiger
{
public void Drink(Water water)
{
}
}
四.合成复用原则
合成复用原则是将已有的对象纳入到新对象中,作为新对象的对象成员来实现的,新对象可以调用已有对象的功能,从而达到复用。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。