C#小结

C#真正接触的面向对象的语言,和学过的VB一样包含一些语言的基础比如讲的数据类型、运算符、控制语句……大同小异,首先来整体的看一下

 

C#小结

     首先从基础看起,在数据类型分为值类型和引用型。值类型在内存里是值,而引用类里是地址。

     还需要区别的是结构和类

        类是引用型,结构是值类型

        类可(被)继承,结构不可以

        类在申明变量时可以直接初始化,结构不可以

C#是一门面向对象的语言,可以通过它对面向对象有进一步的认识,面向对象有三个特征:封装、继承、多态。


封装:类自己包含自己在操作时需要的所有信息,只留给外部接口实现一些功能。

C#中体现如下:

<span style="font-size:18px;">
Public class Animal
{
	Private int age;
	Private string name;
	Public int getage
	{
		Return age;
	}
}</span>

Animal作为一个类,将自己的年龄、名字声明为私有的,其他的任何对象都不可以访问,这就是将自己封装起来,而声明的getage是一个公有的方法,可以被访问,它就是people类留给外部的接口。封装起来的类能够自己独立的完成功能,可以随便的进行内部的修改。

 

继承:就和现实中的父和子一样,儿子即子类继承父亲即父类的特征,同时还有自己特有的特征。

这在C#中体现如下:

Public class Animal
{
	Public int age;
	Public string name;
	Public int getage()
	{
		Return age;
	}
}

Public class Cat:Animal 
{
	Public void shout()
	{
		Console.WriteLine(“我是猫,喵”);
	}
}
这里的 Cat 继承 Animal 的共有成员和变量,同时拥有自己特有的 shout 方法。

 

多态:一样的方法,有不同的实现。

     多态在面向对象中几乎是时刻都在体现着,来看一下几种实现多态的方法。

1、重载

①   方法重载  ②运算符

2、重写

①   Virtual方法重写 ②抽象方法重写

3、接口

 

重载和重写的区别:

重载是在一个类里实现的,重载的方法必须有相同的方法名,不同的参数类型或个数;重写是在父类和子类之间实现的,且重写的方法必须是虚方法或抽象的方法(PS:抽象的方法其实就是隐式的虚方法,只是没有用virtual进行声明)

 

方法重载

<span style="font-size:18px;">
Class PayMoney
{
     Public void paymoney(int electcharge)
     {
         //付电费的代码
     }
Public void paymoney(long watercharge)
     {
         //付水费的代码
     }
}</span>

运算符重载

<span style="font-size:18px;">//Math是一个类,有x,y,z成员
Public Math operator + (Mathnum1,Math num2)
{
     MathA = new Math(); //实例化一个A对象
     A.x=num1.x+num2.x
     A.x=num1.y+num2.y
    A.x=num1.y+num2.y
}</span>

一般的“+”只能计算两个数,而重载之后可以安如上方法进行计算

虚方法重写

<span style="font-size:18px;"></span>
<span style="font-size:18px;">
Public class Animal
{
	Public int age;
	Public string name;
	Public int getage()
	{
		Return age;
	}
	Public virtual void shout() //虚方法要被重写才可以使用
	{
		Console.WriteLine(“要重写”);
	}
}

Public class Cat:Animal   
{
	Public override void shout()   //对virtual方法进行重写
	{
		Console.WriteLine(“我是猫,喵”);
	}
}</span>

抽象方重写和虚方法重写类似,只是在类和方法之前加上 abstract 关键字即可。

 

接口的多态

接口是拥有接口所定义的方法的类才进行实现。一个接口可以被多个类实现,一个类也可以实现多个接口。

     首先定义一个接口

        

<pre name="code" class="csharp"><span style="font-size:18px;">		
Interface shout  //定义一个叫的接口
		{
			Void shout(); //这是叫的方法,不进行实现所以不用{} 
		}
		Public class Cat:shout  //相当于继承接口 l   
<span style="white-space:pre">	</span>        {
			Public void shout()   //对接口的方法进行实现							<span style="white-space:pre">		</span>{
				Console.WriteLine(“我是猫,喵”);
			}
<span style="white-space:pre">		</span>}
		Public class student:shout
		{
			Public void shout()   //对接口的方法进行实现							<span style="white-space:pre">		</span>{
				Console.WriteLine(“我是学生,喂”);
			}
		}</span>
 

由上例中可以看出实现接口的类可以没有没有关系,不一定是继承同一个父类。

       这次通过C#的学习对面向对象有有了进一步的认识,这些是理论上初步的认识,还没有实践的体会,欠缺的还很多。

        我们只学过VB这门基于对象的语言,在使用时有很深的面向过程的体会,我们需要知道自己要实现什么功能,然后一步一步的去实现,大量的代码都会重复,而面向对象的继承、多态可以增到代码的复用性,这其中的好处还要慢慢的体会。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 17
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值