c#复习

1、进程 

1个应用程序就是一个进程,一个进程又是由多个线程组成的,进程帮助我们在内存中分配应用程序执行所需要的空间,我们可以通过进程来直接操作应用程序。

 1  private void button1_Click(object sender, EventArgs e)
 2         {
 3             #region 1//存储着当前正在进行的进程
 4             //Process[] pro = Process.GetProcesses();
 5             //string s = "";
 6             //foreach (var item in pro)
 7             //{
 8             //    s += item.ProcessName;
 9             //}
10             //MessageBox.Show(s);
11             #endregion
12 
13             #region 2//使用进程来打开应用程序
14             //Process.Start("calc");//打开计算器
15             //Process.Start("notepad");//记事本
16             #endregion
17 
18             //#region 使用进程打开文件
19             //ProcessStartInfo psi = new ProcessStartInfo(@"D:\study\ae\codeTest\进程\2反射.exe");
20             //Process pro = new Process();
21             //pro.StartInfo = psi;
22             //pro.Start();
23             //#endregion
24 
25         }
View Code

 2、关键字

  1)new:创建对象 在堆中开创空间,在开辟的空间中创建对象,调用父对象 的构造函数

                 隐藏父类的成员

  2)this:当前对象

 3)base:父对象

3、封装继承和多态

   1)封装:函数的封装,减少冗余代码, 将很难理解的功能封装在一起,但是对外提供了一个很简单的接口,供我们使用

   2)继承:减少冗余代码,让类与类产生了关系,为多态打下了基础  

             特性:单根性,一个子类只能有一个父类,
                        传递性,类的传递
          //里氏转换:子类可以赋值给父类,如果父类中封装的是子类对象,则可以把父类转换为对应的子类对象
                            is,和as
                            作用,可以将所有的子类当做父类来看,针对父类进行编程,写出通用的代码,适应需求的不断变化

            

 1   Animal a = new Cat();
 2             //is a
 3             if (a is Cat)
 4             {
 5                 ((Cat)a).Bark();
 6             }
 7             else
 8             {
 9                 MessageBox.Show("转换失败");
10             }
11             //c为一个对象Cat或者为null
12             Cat c = a as Cat;
13             if (c != null)
14             {
15                 c.Bark();
16             }
View Code

 

   3)多态:不同的对象收到相同消息时,会产生不同行为,同一个类在不同场合下表现出不同的行为特征
               作用:可以将所有的子类当做父类来看,屏蔽不同子类对象之间的差异,针对父类进行编程,写出通用的代码,适应需                           求的不断变化
               //虚方法:Virtual override
              //抽象类:abstract override

              //接口:interface

  

  class Employee
    {
        public virtual void Daka()
        {
            MessageBox.Show("员工九点打卡");
        }
    }
    class Manager:Employee
    {
        public override void Daka()
        {
            MessageBox.Show("经理十一点打卡");
        }
    }
    class Programmer:Employee
    {
        public override void Daka()
        {
            MessageBox.Show("程序员不需要打卡");
        }
    }
虚方法

 

        (1)抽象类不允许创建对象 虚方法和抽象类(父类可以创建对象,并且父类方法有意义)

        (2)抽象成员必须标记为abstract,并且不能有任何实现(连大括号也不能有)
        (3) //抽象成员必须在抽象类中,抽象类不能被实例化
         (4)子类继承抽象类后,必须把父类中的所有抽象成员都重写(除非子类也是抽象类,则可以不重写)
        (5)抽象成员不能是private
        (6)抽象类中可以包括实例成员,供子类用,且可以不用重写
        (7)抽象类是由构造函数的,供子类调用

 1  abstract class Animal
 2     { 
 3         //抽象方法 ,父类没有办法确定子类如何去实现
 4        public abstract void Bark();
 5        public void Eat()
 6        {
 7            MessageBox.Show("舔着吃");
 8        }
 9 
10        public void Drink()
11        {
12            MessageBox.Show("舔着喝");
13        }
14     
15     }
16 
17     //子类继承了抽象类,必须重写抽象类的所有方法
18     class Cat:Animal
19     {
20         public override void Bark()
21         {
22             MessageBox.Show("喵喵");
23         }
24 
25        
26 
27     }
28 
29     class Dog:Animal
30     {
31         public override void Bark()
32         {
33             MessageBox.Show("汪汪");
34         }
35               
36     }
37 
38     class Pig:Animal
39     {
40         public override void Bark()
41         {
42             MessageBox.Show("嗯嗯");
43         }
44 
45     }
抽象类

        接口:(1)接口是一种能力,也是一种规范,如果继承了这个接口,就必须按照接口的要求来实现这个接口

                   (2)接口的功能要单一,接口不能被实例化,因为和抽象类一样,创建没有意义
                   (3)接口中的成员不能加访问修饰符,默认为public,不能修改
                   (4)接口中有方法、属性、索引器,不能有字段和构造函数
                   (5)接口不能继承一个类,但可以继承接口
                   (6)实现接口和显示实现接口(这个函数才是接口的,不是类的)
                   (7)抽象类的接口应有子类实现接口,尽量不要让父类去继承接口

4、访问修饰符  

       public 任何地方都可以访问
       private 私有的,只能在当前类的内容访问
       internal 只能在当前程序集中访问
       protected 可以在当前类以及该类中的子类中访问

    

 1   class Person
 2     {
 3         private string _name;
 4         public int _age;
 5         protected char _gender;
 6         internal int _chinese;
 7         protected internal int _math;
 8     }
 9 
10     class student:Person
11     {
12         public void test()
13         {
14            // _age
15             //_gender 
16            // _chinese
17             //_math
18         }
19     }
访问修饰符

5、索引器

1 class person
2     {
3         Dictionary<string, string> dic = new Dictionary<string, string>();
4         public string this[string index]
5         {
6             get { return dic[index]; }
7             set { dic[index] = value; }
8         }
9     }
View Code索引器

 

      

 

posted @ 2017-07-09 22:24  高金顶  阅读(113)  评论(0)    收藏  举报