zoukankan      html  css  js  c++  java
  • ASP.Net 基础知识

    对象的特性:唯一性,抽象性,继承性,多态性

    唯一性:每个对象都有自身唯一的标识,通过这种标识,可找到相应的对象。

    抽象性:抽象性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。

    继承性:继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。

    多态性:多态性是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。

    构造函数的作用:实例化对象,初始化数据        

    注意如果类里面没有定义构造函数,编译器也会产生一个空构造函数,每一个类都会赋上一个默认值,如果类里 面定义了私有构造函数,这个类将不能实例化。

    抽象类(abstract):

       1)抽象类可以包含抽象方法和实例方法;抽象类可以没有抽象方法,但有抽象方法的类一定是抽象类。

       2)抽象方法声明时没有实现体,类似于接口中声明的方法。

       3)抽象方法必须在派生类中通过override重载来实现,这点也类似于接口,但不同的是实现接口的方法不用 override。

    抽象类作用:抽象类实际意义就是说,派生类去实现抽象类定义的方法。

    注意用abstract修饰的抽象函数没有方法体,只能在子类继承父类的时候,在子类里面重写(overload)函数抽象类提供多个派生类共享基类的公共定义,它既可以提供抽象方法,也可以提供非抽象方法。抽象类不能实例化 ,

    必须通过继承由派生类实现其抽象方法,因此对抽象类不能使用new关键字,也不能被密封。如果派生类没有实 现所有的抽象方法,则该派生类也必须声明为抽象类。另外,实现抽象方法由overriding方法来实现。

    接口(interface):接口把一组公共方法和属性组合起来 ,以封装特定功能的一个集合。通过类可以实现接口,这样类就支持接口所有的属性和方法。

    注意接口只能对方法和属性进行定义,不能实现方法体,只能由支持它的类实现。接口中的成员不能用访问符修饰,如public,private,它的成员默认为public。  

      public interface IMyinterface
      {
        void Dosomething();//方法成员
        int MyAttribute//属性成员
        {
          get;//这里只能定义这个属性是否为只读
          set;
        }
      }

    .NET提供了三种不同的接口实现方式,分别为隐式接口实现、显式接口实现、混合式接口实现

    public class MyClass
      {
      public void SomeMethod()
      {
      // 利用接口的方式声明一个Myinplement对象
      IMyInterface iObj = new MyInplement();
      iObj.MethodA();
      // 利用类的方式声明一个Myinplement对象
      MyInplement obj = new MyInplement();
      obj.MethodB();
      }
      }
      public class MyInplement : IMyInterface
      {
      #region IMyInterface Members
      ///
      /// 利用隐式接口实现方式实现接口中的方法
      ///
      public void MethodA()
      {
      Console.WriteLine("a");
      }
      ///
      /// 利用隐式接口实现方式实现接口中的方法
      ///
      public void MethodB()
      {
      Console.WriteLine("B");
      }
      #endregion
      }
      public interface IMyInterface
      {
      void MethodA();
      void MethodB();
      }
    接口实现示例

    重载特点:方法名称必须相同、参数列表必须不同、返回值类型可以不同

    public int Sum(int x,int y)
    
    public int Sum(int x,int y,int z)
    
    public double Sum (Double x,Double y)

    重写特点:重写是指具有父子关系的两个类,子类重写父类中的方法,但是要求,父类中的方法必须是抽象的或虚方法,子类才可以重写,其它无修饰的方法不可以重写,可以继承或覆盖。

      //重写
        public class tests
        {
            public virtual string GetName() {
                return "name";
            }
        }
        public class tests2:tests {
            public override string GetName()
            {
                return "NAME";
            }
        }
       //覆盖子类方法
        public class tests
        {
            public virtual string GetName() {
                return "name";
            }
        }
        public class tests2:tests {
            public new string GetName()
            {
                return "NAME";
            }
        }

    base关键字:用于从派生类中访问基类的成员,调用基类上已被其他方法重写的方法。

    注意:基类访问只能在构造函数、实例方法或实例属性访问器中进行,从静态方法中使用 base 关键字是错误的。

    //实例:
    public class Person
    {
        protected string ssn = "444-55-6666";
        protected string name = "John L. Malgraine";
    
        public virtual void GetInfo()
        {
            Console.WriteLine("Name: {0}", name);
            Console.WriteLine("SSN: {0}", ssn);
        }
    }
    class Employee : Person
    {
        public string id = "ABC567EFG";
        public override void GetInfo()
        {
            // Calling the base class GetInfo method:
            base.GetInfo();
            Console.WriteLine("Employee ID: {0}", id);
        }
    }
    
    class TestClass
    {
        static void Main()
        {
            Employee E = new Employee();
            E.GetInfo();
        }
    }
    
        //指定创建派生类实例时应调用的基类构造函数。
        public class BaseClass
        {
            int num;
            public BaseClass() {
                Console.WriteLine("in BaseClass()");    
            }
            public BaseClass(int i) {
                num = i;
                Console.WriteLine("in BaseClass(int i)");
            }
            public int GetNum() {
                return num;
            }
        }
    
        public class DerivedClass : BaseClass { 
            public DerivedClass():base(){
            
            }
            public DerivedClass(int i) : base(i) { 
            
            }
        }

    virtual(虚方法):virtual 关键字用于修饰方法、属性、索引器或事件声明,并且允许在派生类中重写这些对象 。

    注意:virtual 修饰符不能与 static、abstract, private 或 override 修饰符一起使用。

    private:私有成员只有在声明它们的类和结构体中才是可访问的。

    public:公共访问是允许的最高访问级别。

    protected:受保护成员在它的类中可访问并且可由派生类访问。

    internal:只有在同一程序集的文件中,内部类型或成员才是可访问的。

    const:关键字用于修改字段或局部变量的声明。它指定字段或局部变量的值是常数,不能被修改。

    readonly: 关键字是可以在字段上使用的修饰符。当字段声明包括 readonly 修饰符时,该声明引入的字段赋值只能作为声明的一部分出现,或者出现在同一类的构造函数中。

    const以及readonly的区别:

      1)const、readonly和static readonly定义的常量,指定初始值后(包括在构造函数内指定的初始值) 将不可更改,可读不可写;

      2)const定义时必须指定初始值,而readonly定义时可以不进行初始化(MS建议在定义时初始值),同时也可以在构造函数内指定初始值,并以构造函数内指定的值为准

      3)const和static readonly定义的常量是静态的,只能由类直接访问;而readonly定义的常量是非静态的,只能由实例对象访问; 

      4)static readonly常量,如果在构造函数内指定初始值,则必须是静态无参构造函数;

      5)const是编译时常量,readonly是运行时常量;cosnt较高效,readonly较灵活

    abstruct和interface的区别:

      1)抽象类可以有构造方法,接口中不能有构造方法。

      2)抽象类中可以有普通成员变量,接口中没有普通成员变量

      3)抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。

      4.)抽象类中的抽象方法的访问类型可以是public,protected,但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。

      5) 抽象类中可以包含静态方法,接口中不能包含静态方法

      6) 一个类可以实现多个接口,但只能继承一个抽象类。

    out和ref:
      1)使用ref型参数时,传入的参数必须先被初始化。对out而言,必须在方法中对其完成初始化。

      2)使用ref和out时,在方法的参数和执行方法时,都要加Ref或Out关键字。以满足匹配。

      3)out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候。

      注意:ref是有进有出,而out是只出不进。  

    将来的你,一定会感谢现在努力的自己!
  • 相关阅读:
    zzuli oj 1120 最值交换
    zzuli oj 1119 一维数组排序
    zzuli oj 1118 数列有序
    zzuli oj 1117 查找数组元素
    寒假集训 字符串专题 1001
    zzuli oj 1116
    A
    Codeforces Round #615 (Div. 3) E. Obtain a Permutation
    Codeforces Round #615 (Div. 3) F. Three Paths on a Tree
    Codeforces Round #603 (Div. 2)F. Economic Difficulties
  • 原文地址:https://www.cnblogs.com/GreatPerson/p/8038607.html
Copyright © 2011-2022 走看看