C#小结
来源:互联网 发布:友情岁月演唱会知乎 编辑:程序博客网 时间:2024/04/28 18:40
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这门基于对象的语言,在使用时有很深的面向过程的体会,我们需要知道自己要实现什么功能,然后一步一步的去实现,大量的代码都会重复,而面向对象的继承、多态可以增到代码的复用性,这其中的好处还要慢慢的体会。
- C#小结
- C#小结
- C#小结
- c# 小结
- C#小结
- C#小结
- C#小结
- C#小结
- C#小结
- C#小结
- C#小结
- C#小结
- 多线程 C#解决方案小结
- C# - new关键字小结
- C#正则表达式小结
- C#2.0学习小结
- C#继承小结
- C#正则表达式小结
- java---计算出现次数最大的任意字符
- Struts2 国际化
- 时空上下文视觉跟踪(STC)算法的解读与代码复现
- 成绩转换
- 崩溃恢复和介质恢复的区别
- C#小结
- QCustomPlot实现动态折线图
- 表单乱码问题解决
- webview双击事件的捕获
- IOS 消息推送 服务端和客户端
- Train Problem I
- leetcode Maximum Subarray
- 第十周项目五 找出1000以内的完数
- query for a map