.net学习之面向对象

  
面向对象
这个学过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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值