属性 & 方法
属性-一个人的特征
方法-一个人的动作行为
修饰符
修饰符 | 解释 |
---|---|
private | 私有成员,在类的内部才可以访问 |
public | 公共成员,完全公开,没有访问限制 |
internal | 当前程序集内可以访问 |
protected | 保护成员,该类内部和继承类中可以访问 |
抽象类 & 具体类 & 接口
抽象类通常代表一个抽象概念,它提供一个继承的出发点,当设计一个新的抽象类时,一定是用来继承的,所以,在一个以继承关系形成的等级结构里面,树叶节点应当是具体类,而树枝节点均应当是抽象类。
抽象类与抽象方法由abstract修饰,当使用abstract修饰类时,表明这个类只能被继承;当使用abstract修饰方法时,表明这个方法必须由子类提供实现。
一个接口表示:“所有实现了该特定接口的类看起来都像这样”!!!!因此任何使用某特定接口的代码都知道可以调用接口的那些方法。而且仅需知道这些。因此,接口被用来建立类与类之间的协议。
详情参考:https://blog.csdn.net/u010582345/article/details/78398838
重载 & 重写
override(重写)
重写:不同对象对同一个方法调用的不同行为(指不同的对象收到相同消息时,会产生不同的行为)
1、方法名、参数、返回值相同。
2、子类方法不能缩小父类方法的访问权限。
3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。
4、存在于父类和子类之间。
5、方法被定义为final不能被重写。
overload(重载)
方法重载是让类以统一的方式处理不同类型数据的一种手段。
多个同名函数同时存在,具有不同的参数个数/类型。
重载Overloading是一个类中多态性的一种表现。
1、参数类型、个数、顺序至少有一个不相同。
2、不能重载只有返回值不同的方法名。
3、存在于父类和子类、同类中。
详情参考: https://blog.csdn.net/linzhaojie525/article/details/55213010
is & has
“Is—A”是指一个类是另一个类的“一种”,是属于的关系,而“Has—A”则不同,它表示某一个角色具有某一项责任。导致错误的使用继承而不是聚合的常见的原因是错误地把“Has—A”当成“Is—A”.
实际上,雇员、经历、学生描述的是一种角色,比如一个人是“经理”必然是“雇员”。在上面的设计中,一个人无法同时拥有多个角色,是“雇员”就不能再是“学生”了,这显然不合理,因为现在很多在职研究生,即使雇员也是学生。
上面的设计的错误源于把“角色”的等级结构与“人”的等级结构混淆起来了,误把“Has—A”当作”Is—A”。具体的解决方法就是抽象出一个角色类:
区分好”Has—A”和“Is—A”的关系了,我们就能很好的使用合成复用原则。
泛型
泛型是具有占位符的类、结构、接口和方法,这些占位符是类、结构、接口和方法所存储或使用的一个或多个类型的占位符。
List< T >——在尖括号中写什么类型,这个集合就变成什么类型的集合
namespace _02泛型集合
{
class Program
{
static void Main(string[] args)
{
List<int> list = new List<int>();
//随机的往这个list集合中添加十个数字,不能重复,求和,求最大值最小值平均值
Random r = new Random();
int num = 0;
while (list.Count!=10)
{
num = r.Next(1, 100);
if (!list.Contains (num))
{
list.Add(num);
}
}
Console.WriteLine("最大值{0}",list.Max ());
Console.WriteLine("最小值{0}",list.Min() );
Console.WriteLine("和为{0}",list .Sum ());
Console.WriteLine("平均值为{0}",list .Average ());
Console.ReadKey();
}
}
}
深复制 & 浅复制
浅复制——被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用都仍然指向原来的对象。
深复制——把引用对象的变量指向复制过的新对象,而不是原有的被引用的对象。例如abc三个引用对象都是不同的,复制时一变二,二变三,这种方式就是深复制。