抽象类可以包含抽象方法,抽象属性还有非抽象的成员
抽象类只能够用作基类被其他类继承,不能够创建抽象类的实例,即对抽象类的使用new操作时错误恶的
抽象方法当中可以定义抽象属性
抽象属性不提供属性访问器的实现,方位其的实现由派生类完成
重载的抽象发个hi如
public override 方法名([参数列表])
{方法的实现]}
如果派生类当中没有对抽象方法的进行重写,则派生类仍然时派生类,必须声明为抽象
public absatc class shape{
procted double radius;
public shape(double r){
radius=r;
}
public abstract double cubage();
}
public class globe:shape{
public globe(double r):base(r){
}
public override double cubage()
{
return Math.PI*Radius*radius*radius*4.0/3;
}
public override string ToString(){
return string.Format("球体的体积为:{0}",cubage());
}}
public class cone:shape{
pruvate double height;
public cone(double r,double h):base(r0{height=h;}
public override double cubage(){
return Math.PUI*radiu*radius*height/3;
}
public ovrride string ToString(){
return string.Format("圆锥体的体积是:{0}",cubage();
sealed声明的类称为密封类
密封类时不能被继承的类,不能够作为基类,与抽象类相反
使用sealed修饰的方法称为密封方法
密封的方法不能再派生类当中覆盖,即用sealed声明的方法不能够被改变
所有的派生类使用相同的方法
class A{}
sealed class B:A
{}
class C:B
{}
C类的定义时错误恶的
基类的密封的方法不能再派生类当中覆盖
声明为private,statci的方法也隐含sealed所以不能再派生类当中覆盖
同时声明为override和sealed的派生类的方法可以覆盖基类的方法,但是不能在继承层次的下层派生类当中覆盖
接口是一种引用类型,利用接口可以为不同的类提供通用的共呢个
节后只提供抽象的成员,不提供具体的实现,成员功能由实现接口的类完成的
接口只允许声明属性,事件,索引器,不饿能声明数据成员,静态成员,构造函数,析构函数
接口成员不能够使用Statci,absrtact,override,virtual修饰符,使用new修饰符系统会给出警告提示不需要关键字new
接口成员的
接口允许多继承
接口成员包括从基接口继承的成员和接口本身声明的成员
接口修饰符:public ,procted,internal,private控制接口的访问能力,new是在嵌套接口当中允许存在的修饰符,说明用相同的抿成隐藏一个继承的成员
接口可以继承,
interface ID:IA,IB,IC{
}
public interface IPortA{
void DisplayStringA();
}
public interface IPortB:POrtA{
void DisplayeStringB();
}
对于接口当中存在同名的成员,采用显式实现接口的方法
接口名。成员名
显式实现的成员必须通过所属的接口来调用
((接口名)类对象名).方法名
运算符的重载
public static 返回值类型oeprator 运算符(【形参表列】){
函数体
}
public static ComplexNumber operator +(ComplexNumber x,ComplexNumber y){
return new ComplexNumber(x.real+y.real,x.imaginary+y.imaginary);
}
static void main(string[]args){
int[]array-{1,2,3,4,5,6};
int index;
try{
Console.WriteLine("请输入下标");
index=Convert.ToInt32(Console.ReadLine());
if(index<0||index>array.Length-1)
throw new indexOutOfRangeException("下标应该在0到"+Convert.ToString(array.Lnegth-1)+"之间");
Console.WritelIne("数组再第{0}个元素为:{1}",index,array[index]);
}
catch(IndexOutOfRangeException e){
Console.WriteLine(e.Message);
]
}
委托就是将方法作为方法的参数
public delegate void GreetingDelegate(string name);
public delegate void GreetingDelefate(string name);
委托是一个类,他定了方法的类型,使得可以将方法作为另一个方法的参数进行传递
public delegate void MyDelegate*string s);
委托对象可以通过使用new关键字来创建,且与一个特定的方法有关
当创建委托的时候,传递到new语句的参数就像方法调用一样税额,但是不带有参数