.NET的开发模式以及C#中 override 和 overload、抽象方法 和 虚方法 的区别

2018.7.30
一.ASP.Net 两种开发模式:

1.ASP.Net WebForm的开发模式

(1)处理流程

    在传统的WebForm模式下,我们请求一个例如http://www.aspnetmvc.com/blog/index.aspx的URL,那么我们的WebForm程序

会到网站根目录下去寻找blog目录下的index.aspx文件,然后由index.aspx页面的CodeBehind文件(.CS文件)进行逻辑处理,

其中或许也包括到数据库去取出数据(其中的经过怎样的BLL到DAL这里就不谈了),然后再由index.aspx页面来呈现给用户。

 综上所述,在WebForm模式下:一个URL请求的是在服务器与该URL对应路径上的物理文件(ASPX文件或其他),然后由该文件来处理这个请求并返回结果给客户端。

(2)开发方式

  • 服务器端控件

  • 一般处理程序+Html静态页+Ajax

  • 一般处理程序+Html模板引擎

2. ASP.Net MVC的开发模式

(1)处理流程

在ASP.Net MVC中,客户端所请求的URL是被映射到相应的Controller去,然后由Controller来处理业务逻辑,或许要
从Model中取数据,然后再由Controller选择合适的View返回给客户端。再说回前面我们运行的ASP.NET MVC程序访问
http://www.aspnetmvc.com/Home/Index这个URL,它访问的其实是HomeController中的Index这个Action。

(2)显著特点

 • 不会取代WebForm

 • 底层跟WebForm都是一样的,只是管道上不同的处理而已

二.解读MVC
Model:主要存储或处理数据的组件,实现业务逻辑对实体类相应数据库操作

View: 用户接口组件,主要将Model中的数据展示给用户,aspx和ascx文件被用来处理视图

Controller:处理用户交互,从Model中获取数据并传给指定的View


三.
1.MVC作为架构模式:
作为架构模式时,View的职责就是负责展示数据,而Controller则负责获取View传递来的数据,然后调用业务逻辑层处理
完成的数据传递给View进行展示。而Model则处理业务逻辑,并把结果返回给Controller。从传统三层架构上来看,View和
Controller都属于UI层,而Model则横跨BLL与DAL层。


=====================================================================================================================================

C#中 override 和 overload 的区别

override:重写 , 在子类中重写父类中的方法
overload:重载 , 在同一个类或父子关系类中皆可重载某个方法

1.override:   父类:public virtual string ToString()
                        {
                         return "a";
      }
              子类:public override string ToString()
               {
                return "b";
      }
      
2.overload:  同一类中或父子关系类中皆可.
                   public string ToString()
       {
       return "a";
       }
                   public string ToString(int id)
       {
       return id.ToString();
       }
      
重写(override)是用于重写基类的虚方法,这样在派生类中提供一个新的方法;

重载(overload)是提供了一种机制, 相同函数名通过不同的返回值类型以及参数来表来区分的机制

Override 是在继承的时候,加上Override关键字,在使用这个子类的这个函数的时候就覆盖掉父类(或超类)的函数了
例如: Base里有方法void A(int a)
      Base:Derived 觉得A写得不好,则可以重写这个方法:
   override void A(int a)即可以覆盖掉原来的方法
     
本质区别:重写(Override)的两个函数的函数特征相同,
         重载(Overload)的两个函数的函数名虽然相同,但函数特征不同
 
         函数特征包括函数名、参数的类型和个数。
  
1.重写(override)
使用 override 修饰符来修改方法、属性、索引器或事件。重写方法提供从基类继承的成员的新实现

由重写声明重写的方法称为重写基方法。重写基方法必须与重写方法具有相同的签名。

不能重写非虚方法或静态方法。重写基方法必须是虚拟的、抽象的或重写的。也就是说,
  
 ??***用 override 修饰符重写的基类中的方法必须是 virtual, abstract 或 override 方法。****
  
2.重载(overload)
当类包含两个名称相同但签名不同的方法时发生方法重载

==================================================================================================

C#中 抽象方法 和 虚方法 的区别

1.抽象方法(用关键字 abstract):

只能声明在抽象类中,方法修饰符不能使用private,virtual,static.
例:
    Public abstract class People              //声明一个抽象类People
    {
        public abstract void study();         //抽象方法(stydy)只能定义在抽象类(People)中
    }
 
    Public class Student:People               //基类继承父类People抽象类
 {
     public override void study()          //重写抽象类的抽象方法
  {
    Console.WriteLine("最爱龙猫~~")
  }
 }
 
 Public class Program
 {
    static void Main(string[] args)
    {
     Student t=new Student();               //实例化派生类(即子类)
  
  People p=t ;                           //使用派生类对象t 实例化 抽象类p
         ####以上等价于 People p=Student t();####
  
  p.study();                            //使用抽象类对象调用抽象类中的抽象方法study
  
    }
 }
   
 1)没有方法体,子类必须重写方法体!!,因此抽象方法可以看成是一个没有方法体的虚方法

    2)抽象类中的抽象方法必须被子类重写。

猜你喜欢

转载自blog.csdn.net/Totora_wq57/article/details/81316522
今日推荐