本章要点ide
主题 | 重要概念 |
成员定义 | 能够在类中定义字段、方法、属性成员。函数 字段用可访问性、名称和类型定义,this 方法用可访问性、返回类型、名称和参数定义,spa 属性用可访问性、名称、get 和/或 set存取器定义code 各个属性存取器能够有本身的可访问性,对象 |
成员隐藏和重写 | 属性和方法能够在基类中定义为抽象或虚拟,以定义继承。blog 派生类必须实现抽象的成员,使用override关键字能够重写虚拟的成员。继承 派生类还能够用new关键字提供新的实现代码,用sealed关键字禁止进一步重写虚拟成员 接口 基类的实现代码能够用base关键字调用get |
接口的实现 | 实现了接口的类必须实现该接口定义为公共的全部成员 能够隐式或显示实现接口,其中显示实现代码只能经过接口引用来使用 |
部分定义 | 使用partial关键字能够把类定义放在多个代码文件中。 还可使用partial挂件自建立部分方法 部分方法有一些限制,包括没有返回值或out参数 若是没有提供实现代码,部分方法就不能编译 |
也可使用关键字static来声明字段、方法、属性,表示他们是类的静态成员
字段用标准的变量声明格式和前面介绍的修饰符来定义
class MyClass
{
public int MyInt;
}
字段也可使用关键字readonly,表示这个字段只能子啊执行构造函数的过程当中赋值。或由初始化赋值语句赋值
静态字段必须经过定义他们的类来访问,而不是经过这个类的对象实例来访问
另外可使用关键字const 来建立一个常量。const成员也是静态的
方法使用标准函数格式、可访问性和可选的static修饰符来声明。
class MyClass
{
public string GetString()
{
return "Here is a string.";
}
}
若是使用static关键字,这个方法就只能经过类来访问,不能经过对象实例来访问。
方法定义关键字:
方法重写示例:
1 public class MyBaseClass 2 3 { 4 5 public virtural void DoSomething() 6 7 { 8 9 //Base implementation. 10 11 } 12 13 } 14 15 public class MyDerivedClass:MyBaseClass 16 17 { 18 19 public override void Dosomething() 20 21 { 22 23 //Derived class implementation,overrides base implementation. 24 25 } 26 27 }
若是使用了override,也可使用sealed 指定在派生类中不能对这个方法做进一步的修改,即这个方法不能由派生类重写
public class MyDerivedClass:MyBaseClass
{
public override sealed void DoSomething()
{
//derived class implementation,overrides base implementation.
}
}
属性拥有两个相似于函数的块,一个用于获取属性的值,一个用于设置属性的值
这两个块也称为访问器:get和set关键字来定义
标准的基本结构
public int MyIntProp
{
get
{
//Property get code.
}
set
{
//Property set code.
}
}
get 块必须有一个属性类型的返回值
当从基类继承一个成员是,也就继承了其现的代码。
若是继承的成员是虚拟,就能够用override关键字重写这段实现代码。
不管继承的成员是否为虚拟,均可以隐藏这些实现代码
public class MyBaseClass
{
public void Dosomething(){ }
}
public class MyDericedClass:MyBaseClass
{
public void Dosomething(){ }
//或者
new public void DoSomething(){ } //new 关键字显示代表意图
}
----------------------------------
重写方法将替换基类中的实现代码
public class MyBaseClass
{
public virtual void Dosomething(){ }
}
public class MyDericedClass:MyBaseClass
{
public override void Dosomething(){ }
//或者
new public void DoSomething(){ }
}
不管是重写成员仍是隐藏成员,均可以在派生类的内部访问基类成员 。例如:
可使用base关键字,表示包含在派生类中的基类的实现代码
public class MyBaseClass
{
public virtual void Dosomething(){ }
}
public class MyDericedClass:MyBaseClass
{
public override void Dosomething()
{
base.DoSomething(); //基类的方法
}
}
this关键字
与base同样,this也能够用在类成员的内部,且该关键字也引用对象实例。this应用的是当前的对象实例
(不能子啊静态成员中使用this关键字,觉得静态成员不是对象实例的一部分)
this关键字最经常使用的功能是把当前对象实例的引用传递给一个方法
另外一个常见用法是先定本地类型的成员
public class MyClass { private int someData; public int SomeData { get { return this.someData; } } }
类能够嵌套在其余类中进行定义
主要用于定义对应其包含类来讲是私有的类,这样,名称空间中的其余代码就不能访问。
要隐藏继承基接口的成员,可使用关键字new来定义
interface IMyBaseInterface
{
void Dosomething();
}
interface IMyDeriverInterface : IMyBaseInterface
{
new void Dosomething();
}
继承一个实现给定接口的基类,就意味着派生类隐式地支持这个接口
在基类中把实现代码定义为虚拟,派生类就能够替换该实现代码,而不是隐藏他们。
1.显示实现接口成员
2.用费公共的可访问性添加属性存取器
使用部分类定义,把类的定义放在多个文件中
只需子啊每一个包含部分类定义的文件中对类使用partial关键字便可,
使用部分类定义,partial关键字必须出如今包含丁一部分的每一个文件的相同位置
注意:应用于部分类的接口也会应用于整个类。
public partial class MyClass:IMyInterface1{}
public partial class MyClass:IMyInterface2{}
和
public class MyClass:IMyInterface1,IMyInterface2
是等价的
部分类定义能够在一个部分类定义文件或多个部分类定义文件中包含基类,可是若是基类在多个定义文件中指定,必须是同一个基类,由于类只能继承一个基类
部分类也能够定义部分方法。
部分方法在部分类中定义,但没有方法体,子啊另外一个部分类中包含实现代码。在这两个部分类汇总,都要使用partial关键字
部分方法也能够是静态的,但他们老是私有的,且不能有返回值。
不能使用out参数,但能够是ref参数