C#成员访问和抽象类与接口

来源:互联网 发布:淘宝电脑配件能买么 编辑:程序博客网 时间:2024/06/08 08:34
 一.成员访问和属性

在定义类的时候我们要考虑成员的访问权限,在这里详细说明private加深大家对private的理解;如果类的成员是private那么在其他类中调用该类对象来访问它是非法的。下面举例说明:

class Per

{

private string name;

public string address;

public int age;

public Per()

{

name = "Upagn";

address = "changsha";

}

}

在Main()函数中的代码如上图所示,

在编译过程中会出现错误:

错误“ceshi.Per.name”不可访问,因为它受保护级别限制

有关属性set和get,set and get,它们的用途:  一般是对类里面的变量进行操作. 而不是直接对类的变量进行操作.有一个很大的作用就是:  便于维护.看下面的程序

在实际程序中的变量调用get和set:

Per percy = new Per();

Console.WriteLine(percy.address);

Console.WriteLine(percy.name);

percy.age = 22; //调用set对age赋值

Console.WriteLine(percy.age);

//调用get获取当前对象age的值

二.有关抽象类和抽象方法的实现

抽象类中只定义了一些成员和抽象的方法,当中成员不一定是抽象的,但是方法必须是抽象的,而且要在子类中覆盖来现实一定的功能;抽象类是不能实例化的。抽象方法也是,只定义了一个方法体,没有具体实现的代码,要在子类中覆盖,下表中左边是个抽象类和它的抽象方法,右边的类继承了它并实现了抽象方法

public abstract class Myab

{

public abstract void Hi(string Name);

//抽象方法不可有主体。   

}

public class SubMyab : Myab

{   public override void Hi(string Name)

{

Console.WriteLine(Name + "override void Hi(string Name");  }

}

类可以这样来初时化并使用: SubMyab obj = new SubMyab();obj.Hi(obj.city); 接口与抽象类的区别是接口中所有的成员都是抽象的,不能包含构造函数,析构函数和静态成员与常量。一个接口可以被多个类继承,一个类可以继承多个接口,并实现接口中的方法,下面定义一个接口,来求三个不同形状的面积:

public interface Ishape

{

double GetArea();//抽象方法只能写成这个样子

}//三个类的实例对象求面积

Retange Myre = new Retange(2, 8);  Console.WriteLine(Myre.GetArea());

Triangle MyTri = new Triangle(5, 1, 9);

Console.WriteLine(MyTri.GetArea());

Circle MyCur = new Circle(10);

Console.WriteLine(MyCur.GetArea());

public class Circle : Ishape

{

public double radius;

public Circle(double radius)

{

this.radius = radius; //构造函数

}

public double GetArea()

{

return (Math.PI) * this.radius * this.radius;

}

}

public class Retange : Ishape

{

public double witdh;

public double height;

public Retange(double width, double height)

{

this.witdh = width;

this.height = height;//构造函数

}

public double GetArea()

{

return this.height * this.witdh;

}

}

输出结果是:

16

45

315.159265358979

public class Triangle : Ishape

{

public double Arc1;

public double Arc2;

public double Arc3;

public Triangle(double Arc1,double Arc2,double Arc3)

{

this.Arc1 = Arc1;

this.Arc2 = Arc2;

this.Arc3 = Arc3; //构造函数

}

public double GetArea()

{

return this.Arc1 * this.Arc2 * this.Arc3;

}

}

上面的代码请大家认真分析并自己敲入电脑中实现,不要直接拷贝。下一节将讲述C#字符串处理。

原创粉丝点击