C#笔记2
来源:互联网 发布:人工智能机器人 编辑:程序博客网 时间:2024/06/09 17:02
C#的类
(1)字段:在类内定义的变量成员成为字段。
静态字段static:用修饰符static声明的字段称为静态字段,它属于类而不属于某个对象。
实例字段:未使用static修饰的字段。
只读字段:使用readonly修饰的字段,只能在字段声明或构造函数中重新赋值,在其他任何地方都不能改变只读字段的值。
常量:使用const修饰的字段,只能在声明中初始化,以后不能再修改。
(2)创建对象
<对象名>=new <构造方法名>([参数列表]);
如为Car类创建一个对象:
Car myCar=new Car();
(3)this指针
当每个对象呗调用时,this便引用该对象(即引用该对象的地址)。
两种基本的用法:1)访问当前类成员;2)在声明构造函数时指定需要先执行的构造函数。
this用于构造函数:其中this表示该类本身所声明的、形式参数表和实际参数表最匹配的另一个实例构造函数,这个构造函数会在执行正在声明的构造函数之前执行。
<访问修饰符> 类名(形式参数):this(实际参数表){ ........//语句块;}
(4)属性
访问器get和set
get{ return 要访问的成员;}set{ 要设置值的成员=value;}
如:
public class Date{ private int month; public int Month { get{return month;} set { if(value>0&&value<=12) month=value; } }}
继承与多态
(1)继承,C#中类的继承只支持单一继承,不支持多重继承。
派生类构造函数自动调用基类不带参数的构造函数;
(2)隐藏基类成员:1)使用密封类(sealed)可以防止对类的继承。
sealed class A{ .....}public class B:A //错误,类A是密封类,不能被继承{....}
在重写基类中的虚方法或许属性上使用sealed修饰符,这样可以防止派生类重写基类的特定虚方法或虚属性。
class A{ public virtual void F(){.....} public virtual void G(){.....}}class B:A{ sealed override public void F(){....} //F()是密封方法 override public void G(){.....}}class C:A{ override public void G(){.....}}
2)使用new修饰符可以显式隐藏从基类继承的成员。
public class Father{ public int x; public int y;}public class Son:Father{ new public static int x=100; //利用new隐藏基类的x ....}
(3)多态性:同一操作作用域不同的类实例,将进行不同的解释,最后产生不同的执行结果。
虚方法用virtual修饰符的方法。虚方法可以由派生类方法取代,它的执行方式可以被派生类改变,取代所继承的虚方法实现的过程称为重写(override)该方法。
如:
class Father{ public virtual string method() { return "virtual Method"; }}class Son:Father{ public override string method { return "override method"; }}
抽象类和接口
(1)抽象方法,声明一个方法时,在前面加上abstract。除非派生类依然是抽象类,否则抽象类的派生类必须提供抽象方法的实现代码。抽象类不能实例化,但是可以引用子类对象;抽象类不能同时是 密封类
abstract class Animal //抽象基类{ public abstract void Method(); //抽象方法}class Dog:Animal{ public override void Method() { .......//实现抽象方法 }}
(2)接口,是一种引用数据类型,使用interface关键字声明。接口的名称通常以“I”开头。
属性 接口修饰符 interface 接口名:基接口{ ......//接口成员}
如:
public interface IImage{ int DeleteImage(); void DisplayImage();}
接口继承:派生接口继承了基接口中的函数成员说明,而没有继承富接口的实现;接口继承允许多重继承,一个派生接口可以由多个基接口。
接口实现:接口声明只包含成员的定义,而没有实现代码。接口中的成员都必须在其派生类中实现。
如果一个派生类既继承自基类又实现接口,那么在声明派生类的基类列表中,要先写基类再写接口,否则会出现编译错误。
- 【笔记篇】C#笔记2
- C# 学习笔记(2)
- Effective C#笔记(2)
- C#笔记2
- C# 学习笔记(2)
- C#笔记2
- c# 线程笔记2
- C#学习笔记2
- C#笔记2
- C#学习笔记(2)
- C#学习笔记2
- c#学习笔记2
- c#学习笔记2
- C#学习笔记2
- c#学习笔记2
- C#学习笔记2
- C#笔记2
- C# 学习笔记 2
- oracle_SQL学习笔记
- 算法提高 队列操作
- mesos编译遇到的一些坑
- 树&二叉树
- 抽象和封装
- C#笔记2
- 图论——二分图
- Android Studio 打包成jar文件并混淆代码
- 基数转换子程序
- Java多线程编程
- [leetcode]Top K Frequent Elements
- Tango 点云 demo 代码阅读笔记
- MVC基础
- (4)hadoop学习——mapreduce已死?