基类、派生类的学习感悟
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关键字的功能,即虚拟功能;在派生类中可以对该方法或属性进行重写操作。
继续中……
我们经常听说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关键字的功能,即虚拟功能;在派生类中可以对该方法或属性进行重写操作。
继续中……
相关文章推荐
- C++primer学习:面象对象程序设计(1):定义基类和派生类
- 学习笔记之深入浅出MFC 第8章 C++重要性质----基类与派生类:谈继承(Inheritance)
- 继承与派生类 学习笔记3--虚基类
- C++ Primer 学习笔记_65_面向对象编程 -概述、定义基类跟派生类
- C++ 学习(派生类到基类准还的可访问性)
- C++ Primer 学习笔记_66_面向对象编程 -定义基类跟派生类[续]
- 派生类与基类学习
- C++学习笔记(1)——基类、派生类的对象空间
- 派生类到基类的转换(c++学习笔记)
- C#学习之路,学习笔记 第九章 继承 9.2由基类创建派生类
- C/C++日常学习总结(第十四篇)C++基类与派生类的转换
- c++ primer 学习杂记2【派生类到基类转换的可访问性】
- MFC学习笔记(三)之基类、派生类
- C++学习笔记(5)——基类、派生类的构造函数、析构函数的调用顺序
- C++学习笔记(6)----基类和派生类的构造函数和析构函数的执行顺序
- C++ Primer 学习笔记(9): 基类和派生类的转换
- C++学习笔记_1:派生类与基类关系
- C++ 学习之继承1:基类与派生类
- 派生类到基类的转换(c++学习笔记)
- C++学习基础之基类和派生类