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#字符串处理。
- C#成员访问和抽象类与接口
- java中成员访问修饰符,接口与抽象类相关知识
- 接口与抽象类 c#
- c#抽象类与接口
- C#类、接口、虚方法和抽象方法-抽象类与接口的区别与联系
- c# 抽象类和接口
- C# 抽象类和接口
- c#接口和抽象类
- C#抽象类和接口
- C#抽象类和接口
- C#接口和抽象类
- C#抽象类和接口
- c#抽象类和接口
- C#接口和抽象类
- C#抽象类和接口
- C# 抽象类和接口
- C#抽象类和接口
- C#类、接口、虚方法和抽象方法-非抽象类与接口的差别
- 关于函数指针(转)
- 自定义时间控件
- 做事要靠自己----->让你变得更坚强
- 分级生成树型结构
- JS省市地区联动(PCAS)
- C#成员访问和抽象类与接口
- 开源啦~~ 傻鸡鸡 分词程序 Beta 0.1版
- vm下linux不能启动Xwindows,怎么办?http://seven.blog.51cto.com/120537/58361
- Joomla论坛组件Kunena1.6.5中文语言包
- CLR Debugger - 在程序抛出异常的时候中断程序的执行
- 【汇编】将十进制数转换为对应的ascii码值
- C#预处理器指令和字符串处理
- PHP和JS中""和''的区别
- A Whirlwind Tutorial on Creating Really Teensy ELF Executables for Linux