C#根本入门 五 递归
递归挪用:一个要领直接或间接地挪用了它自己,就称为要领的递归挪用。
递归要领:在要领体内挪用该要领自己。
递归示例
public long Fib(int n) { if(n==0||n==1) return n; return Fib(k-2)+Fib(k-1); }操练:操作递归计算1+2+3...+100的值。
static int Fun(int n){ if(n==1) return n; return n+Fun(n-1); } 结构要领和析构要领 结构要领结构函数用来初始化东西。好比要成立一个铅笔的东西,那么可以用结构函数来控制它的初始状态,如长度、宽度、颜色等。
结构要领必需跟类重名,结构要领没有返回值,但可以有多个重载。
结构要领的素质是一个结构器,,是为了类的实例化而孕育产生的,结构要领是一种特殊的要领,只能在初始化的时候被执行,外部不能挪用。
结构要领可以不写,系统会默认为你的类添加一个无参结构要领。
如果将结构函数设为private,则不能被外部实例化。
public class Student { public int age; public string name; public int grade; public Student(int a,string n, int g){ age = a; name = n; grade = g; } } class MainClass { public static void Main(string[] args) { Student student = new Student(21, "zxh", 100); Console.WriteLine(student.age+student.name+student.grade); } } 析构要领析构要领用于析构类的实例,用于释放内存空间。
class Car { ~Car() { //cleanup statements } }不能在布局中界说析构要领,只能对类使用析构要领,一个类只能有一个析构要领,无法担任或重载,无法挪用析构要领,,只能自动挪用,析构要领既没有修饰符,也没有参数。
面向东西措施设计面向过程:面向过程就是分析出解决问题所需要的法式,然后用函数把这些法式一步一步实现,使用的时候一个一个依次挪用就可以了。
面向东西:把组成问题事务分化成各个东西,成立东西的目的不是为了完成一个法式,而是为了描述某个事物在整个解决问题的法式中的行为。
面向东西特性:封装、担任、多态。
OOP(面向东西编程)到达软件工程的三个主要方针:重用性、灵活性和扩展性。
封装封装是实现面向东西措施设计的第一步,封装就是将数据或函数等调集在一个个的单元中(称之为类)。
封装的意义在于掩护或者防备代码被我们无意中粉碎。
封装就是对类成员的再次包装。
担任担任用于创建可重用、扩展和改削在其他类中界说的行为的新类,其成员被担任的类称为“基类”,担任这些成员的类称为“派生类”,派生类只能有一个直接基类,但是担任是可通报的,如果ClassB派生出ClassC,ClassA派生出ClassB,则ClassC会担任B和A中声明的成员。
基类有的,派生类都有,派生类有的,基类可能没有,即:派生类可以赋值给基类,而基类不能赋值给派生类。public class Student:Person{} Student担任Person。
public class Person { public void Eat() { Console.WriteLine("人都要用饭"); } } public class Student:Person { public void Learn() { Console.WriteLine("学生都要学习"); } } public class Senior : Student { public new void Learn(){//要领替换 Console.WriteLine("高中生要学的更多"); } public void University() { Console.WriteLine("高中生要考大学"); } } class MainClass { public static void Main(string[] args) { Senior sen = new Senior(); sen.Learn(); sen.University(); sen.Eat(); } } > 打印功效: > 高中生要学的更多 > 高中生要考大学 > 人都要用饭 多态当派生类从基类担任时,它会获得基类的所有要领、字段、属性和事件,派生类可以选择:
担任最接近的基类要领而不重写它
重写基类中的虚拟成员
界说隐藏基类实现的成员的新非虚实现,凡是我们称这为“要领替换”。
虚函数:用virtual修饰的要领成为虚要领;
重写:用override修饰的是要领重写;
密封类:sealed修饰符,修饰类为密封的,不成被担任不成被重写,派生类可以通过sealed来遏制担任,内部的要领可以通过sealed来阻止被重写。
静态类被默认为密封类,所以静态类不能被担任。