.net程序基本编写、执行流程(c#)
1>编写c#代码,保存为.cs文件。
2>通过csc.exe程序来将.cs文件编译为.net程序集(.exe或.dll)。此时的exe或dll并不是机器码(cpu不可理解)。【>csc /out:c:\a.exe c:\program.cs】 C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe
3>程序运行时通过JIT编译(Just In Time)即时编译,将程序集编译为cpu能理解的机器码,这时cpu才能执行。(这个编译过程会与当前机器有关(根据当前机器的内存、cpu等))。
类
类中的成员,如果不加访问修饰符,则默认为private
类如果不加访问修饰符,则默认为internal
继承:
---好处
1.代码重用
2.多态(里氏替换原则LSP)
---特征
1.当写好一个类以后,默认会存在一个没有参数的构造函数(即便我们不写构造函数,也会存在这么一个无参的构造函数)
2.当手动添加一个构造函数以后,会将默认的无参数的构造函数覆盖掉。
3.类的构造函数是不能被继承的。只能在子类中去调用父类的构造函数。
编译是为父类对象,但运行却是一个子类对象。具体特征如下:
1.被声明为父类对象
2.拥有父类属性
3.占用子类的内存空间
4.子类方法覆盖父类的方法时,此时对象调用的是子类的方法;否则,自动调用继承父类的方法.
虚方法和抽象方法的区别
虚方法必须有实现,抽象方法必须没有实现
抽象方法必须在抽象类中声明,虚方法可以出现在抽象类中
抽象方法必须在子类中重写,虚方法可以被重写
实现多态的主要手段:
1.虚方法virtual
2.抽象方法abstract
3.接口。
关于虚方法需要注意的几点:
1.父类中如果有方法需要让子类重写,则可以将该方法标记为virtual
2.虚方法在父类中必须有实现,哪怕是空实现。
3.虚方法子类可以重写(override),也可以不重写。