一.成员访问和属性
在定义类的时候我们要考虑成员的访问权限,在这里详细说明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; } } 输出结果是: |
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#字符串处理。