基类、派生类的学习感悟

来源:互联网 发布:cube world for mac 编辑:程序博客网 时间:2024/05/16 12:30

        对学习而言是没有止境的前进,只有高度可言。

        我们经常听说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关键字的功能,即虚拟功能;在派生类中可以对该方法或属性进行重写操作。

   继续中……

 

 

原创粉丝点击