.net学习之面向对象

    技术2022-05-11  101

    面向对象 这个学过C++的都非常熟悉了,就是用class声明嘛。在。Net中的对象的创建和c++中的大致一样,只是有点不同。 Using System; //使用名字空间 Namespace ClassLibrary {        Public class Class1{               Public Class(){ //这个是构造函数               }        } }   和c++的差不多,这里是使用了名字空间,我估计不一定都是要使用名字空间才能定义类吧。还有就是类方法的定义有就有点烦了。书上写的每个方法前面都加上了public 、private or protected。这样的声明可是有点烦, 不知道能不能想 c ++那样声明,毕竟我还是比较看的习惯 c ++那样的形式。   对象的创建 public class Lion {        public int weight; }   Lion zooLion = new Lion(); 在c++中,使用new创建的对象更加安全,还可以使用delete回收内存空间。 这里是规定使用 new 呢?有没有 delete 呢?可不可以像 c ++哪样,直接像下面创建? Lion zooLion;   对象的析构 据说是。Net framework 具有一个内存自动管理功能,称为垃圾回收。   使用名称空间 创建: namespace CompanyName.Sales {        public class Customer (){} } 书本上推荐象这样使用两层的名字空间,如前面是公司名,后面是部门。既然它推荐,我也用这个好了。   常用的名字空间 在使用。Net中,System是最重要的常用名字空间。 下面是System部分名称空间 名称空间                                    定义 System.Windows.Forms         提供用于创建语句微软windows应用程序的类 System.IO                            提供用于向文件写数据的类 System.Data                         提供用于数据访问的类 System.Web                         提供用于创建web form应用程序的类   对象和方法 对象的创建说过了。对象方法的传递参数和返回大致和c++相同。只是有一点。 但要返回多个值的时候,在c++最通常的是使用指针。然而,指针在c#中认为是不安全的。(闷……)但是还是有另外一种方法可以实现,就是使用引用。 但是我学习c++的时候,老是把指针和应用混淆。这里减少了一个,也许是好事把。不过就是使用惯指针的在这里会不习惯,然而到时候再使用c++编程的时,这样换来换去挺不好受的。 不过这里使用引用的方法有点不同。 这里举个例子: public void GetAddress(ref int number, ref string street, ref string city){        number = streetNumber;        street = streetName;        city = cityName; } 看出在c#中不像c++中使用&的符号,是使用关键字ref。   c#中使用引用需要明确赋值,就是所有参数在传递之前一定要初始化。   重载与封装 这2个名词在学习c++中已经很熟悉了,内容也和在c++中一样,不说了   属性 这个名词很熟悉,不过刚看到它的时候不知道它在这里是做什么的。 书上的大概意思就是: 一种类成员,提供对对象或类中元素的访问。   嘿,对元素的访问,还要那么麻烦?在c++中就是使用类方法放回啊。这里是什么呢?   例子: using System; namespace LearningCSharp {        class Elephant {               private decimal dailyConsumptionRate;                             public decimal DailyFoodIntake {                      get {                             return dailyConsumpitonRate;                      }                      set {                             if(value < dailyConsumptionRate –25) {                                    //通知医疗中心                             }                             else {                                    dailyConsumptionRate = value;                             }                      }               } }   class zoo {               static void Main(string[] args) {                      Elephant e = new Elephant();                      e.DailyFoodIntake = 300M;               } } }   在编程中,可以改变dailyConsumptionRate的类型实现不同的功能 可是具体如何实现,还不清楚   继承 例子: public class Licon:Amimal {        public void StalkPrey(){} }   抽象类 对基类使用abstract关键字 看到这个,我就想起c++中的虚类,它们之间有什么不同呢? 抽象一定要重新定义新的方法,虚类就可以沿用父类的。 这样可能是为了某些重要而且一定要重新定义的方法而设置吧。当然还可以保护代码。 但不重新定义新方法的时候,编译时候会出错。   密封类 当声明为抽象类的时候,就不能成为基类,就是说不能再扩展了。当然还可以应用它的方法咯。 sealed class Horse {} 这样的目的是什么呢?很明显第一个就是出于商业目的。还有就是可是调用优化执行,因为不用知道子类的虚方法。 这个嘛~个人意见还是觉得处于商业目的比较多。   多态性 就是抽象、重载和虚类咯。   觉得面向对象的总体和c++差不多。而且增加了属性和一些类。

    最新回复(0)