您的位置:首页 > 其它

基类、派生类的学习感悟

2011-09-01 10:37 190 查看
对学习而言是没有止境的前进,只有高度可言。

我们经常听说C#与JAVA的区别,虽然说前者很容易入门;但是,这都只是表面而已;因为在现实中,虽然很多人都会操作.NET的一些东西,但又有多少达到精通的地步?很少(这或许就是微软所期待的……)!但反观后者,当你入门以后就很容易学习,进步都比较明显;这就是二者的区别所在。

最近一段时间复习了大一时期的C#程序设计(基类与派生),让我获益匪浅;就像前面说的一样;越到后面的知识点越是让人受益;前面的知识点只是给后面的知识点做下一个铺垫。

下面是我对关于基类和派生的学习:基类,顾名思义就是相当于父类,派生类则是在基类的基础上建立的新类(相当于子类);

派生类的编写: class Man:Person {},class后面的饿Man表示派生类的名称,冒号“:”后面的表示基类的名称;表明Man类继承于Person类; 继承规则:派生类能继承基类的除构造函数、析构函数、实例构造函数以外的都可以;因为这些都是基类所私有的部分。在创建派生类的时候如果要直接调用基类的构造函数,必须要用“:base()”,例如: new private string name; new private int id; ///将基类的这两个字段进行隐藏操作; public
Man(string Name, int ID) : base(Name, ID) { name = Name; id = ID; };冒号后面的内容表示调用基类的构造函数(有参构造函数);对基类的字段或别的方法属性等进行隐藏操作:要实现这一功能,就必须用到new关键字来操作(所谓的隐藏只是对其进行重新的定义操作,但是,原来声明的方式仍然不可以改变。);例如 new private string name; new private int id; 这两行代码的作用就是用来隐藏基类的这两个字段操作;同样,对基类的属性、方法也可以采用这样的方法进行隐藏操作;当对基类的一个方法进行隐藏操作以后,如果我仍然要实现对该方法的操作,那么就可以用base:方法名()
来实现;例如:public string PPrint() { string Put = ";名字:"+name+";编号:"+id; return base.Print() + Put; } 。

对属性、方法的隐藏操作,并调用基类中的该方法;下面的代码主要是派生的类,并且对基类的方法和属性进行了隐藏操作,如下:

///基类

class Person

{ ///字段的设置

private string name;

private int id;

public Person() { }

public Person(string Name,int ID) {

name = Name; id = ID; }

public string Name {

set{ name = value; }

get{ return name; } }

public int Id {

set{ id = value; }

get { return id; } }

/// <summary>

/// 输出操作;

/// </summary>

public string Print() {

string output = "名字:"+name+";"+"编号:"+id;

return output; } }

///派生类

/// <summary>

/// 继承类的操作;

/// 在这个类里面我要实现的功能有:对基类的方法进行隐藏、并且实现调用基类的该方法;如下操作的实现:

/// </summary>

class Woman:Person {

///隐藏基类的字段;

new private string name;

new private int id;

public Woman(string Name,int Id) : base(Name,Id) {

///赋值操作;

name = Name;

id = Id;

}

///对基类的输出函数进行隐藏操作;

new public string Print() {

string output = "我要输出的操作如下:\n";

output = output + "输出操作:"+"\n"+"名字:" + name + " " +"编号:"+ id;

return base.Print() + output; } }

///调用操作:

static void Main(string[] args)

{ ///下面是对新Woman类的操作

Console.WriteLine("请输入用户名 :");

string name = Console.ReadLine();

Console.WriteLine("请输入编号:");

int id = Convert.ToInt32(Console.ReadLine());

Woman w = new Woman(name,id);

Console.WriteLine("最终结果为 :{0}",w.Print());

Console.ReadKey();

}

抽象类的学习:

抽象类的定义,必须用到abstract,该关键字表示该类为抽象类;抽象类相当于在进行房屋修建之前的图纸设计操作,实现该抽象类的功能,则必须在派生类中进行实现;因此,抽象类只能用作基类。在定义抽象方法时,该方法没有方法体;定义属性只有读取属性,没有写入属性操作;同时,将属性或方法定义为抽象方法或属性时,该方法或属性则同时具备virtual关键字的功能,即虚拟功能;在派生类中可以对该方法或属性进行重写操作。

继续中……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: