ASP.NET动态网站制作(21)-- C#(4)

前言:这节课是C#讲解的第四节课,主要围绕面向对象的三大特性展开。上节课已经把封装讲完了,这节课讲继承和多态。

内容

  1.继承:写程序的时候有些信息是公共的,可以将这些公共的信息写在父类里,增强代码的可复用性。

    (1)class A : B,被继承的类称为基类或父类或超类,而继承得到的类称为子类或派生类。子类继承超类的状态和行为(字段和方法),同时也可以具有自己的特征。父类里面的私有成员,子类也是继承了的,只是没有访问权限,就像不知道密码的保险箱一样。

    (2)A:B,B:C,则A:C。

    (3)任何类型的基类是object类型。

    (4)当一个类是密封类(sealed),它是不能被继承的。

    (5)A:B,B里面有sayHi(),用A的实例化对象调用sayHi()的时候,首先调用的是B里面的构造方法,然后是A的构造方法,最后才是sayHi(),如果B上面还有继承的类,则先调用该类的构造方法。如:

Animal类:

1 class Animal
2     {
3         public Animal()
4         {
5             Console.WriteLine("我是动物,我出生了");
6         }
7     }

Person类:

 1 class Person:Animal
 2     {
 3         public int age;
 4         public string name;
 5
 6         public Person()
 7         {
 8             Console.WriteLine("我是人类,我出生了");
 9         }
10         public void SayHi()
11         {
12             Console.WriteLine("大家好,我是人类");
13         }
14     }

Chinese类:

1 class Chinese:Person
2     {
3         public Chinese()
4         {
5             Console.WriteLine("我是中国人,我出生了");
6         }
7     }

其中:Chinese:Person,Person:Animal。

1 class Program
2     {
3         static void Main(string[] args)
4         {
5             Chinese c = new Chinese();
6             c.SayHi();
7             Console.ReadKey();
8         }
9     }

运行结果为:

    (6)如果子类和父类里有相同名称的方法,若子类对象调用该方法,则父类中的同名方法将被隐藏。可使用new修饰同名方法而达到隐藏父类同名方法的目的。

    (7)一个父类的方法如果要被子类覆写,则父类需声明为virtual类型。子类继承后使用override修饰该方法。如在父类中:public virtual void SayHi(),在子类中:public override void SayHi()。

    (8)里氏替换原则:子类对象可以赋值给父类对象:Person p = new Chinese(),反之不成立。

    (9)如果A:B,A、B里面都有一个方法叫SayHi(),B b = new A(),当b调用SayHi()时,默认情况下(即没有被复写),则采用就近原则,即调用 B的SayHi()。如果SayHi()被覆写,则调用子类的SayHi()。

  2.多态:同一种方法名,但是有不同的实现形式。多态分为重载(overload)和覆写(override)。

    (1)重载:方法名相同,方法里面的参数个数或者类型不同。

    (2)只有父类的虚方法(virtual)才能被子类覆写,子类覆写用关键字override。如果不加override就隐藏了父类的方法(需加关键字new)。

    (3)静态方法不能被覆写,但可以被隐藏。

    (4)静态类里面只能有静态成员。

    (5)静态成员不能带override,virtual,abstract。

  3.抽象类、抽象方法:abstract + 类名、abstract + 方法名

    (1)抽象类不能被实例化。

    (2)抽象方法的作用是为子类提供一个统一的接口,抽象方法里面只有声明,没有实现。

    (3)一个类一旦继承了一个抽象类,就必须实现对该抽象类里面所有的抽象方法的实现。

    (4)一个抽象类里面可以有非抽象方法,但是一旦一个类里面有抽象方法,该类就为抽象类了。

    (5)抽象方法在声明后用一个;结束,不需要用{}。

    (6)抽象方法在覆写的时候不需要声明为虚方法。

 1 public abstract class Program
 2 {
 3     public abstract void A();
 4     public abstract void B();
 5 }
 6 public class C : Program
 7 {
 8     public override void A()
 9     {
10         Console.WriteLine("China");
11     }
12     public override void B()
13     {
14         Console.WriteLine("Hello");
15     }
16     public static void Main()
17     {
18         C me = new C();
19         me.A();
20     }
21 }

  4.接口:Interface + 类名

    (1)接口用来实现多继承,一个类只能有一个父类,但可以继承多个接口。

    (2)接口是一种特殊的抽象类,它里面规定得更严格,里面的方法只能为抽象方法。

    (3)定义一个接口的时候,一般为缺省,即 Interface+类名,前面自动加上了public abstract。定义接口中的方法时,也只需要写返回类型 + 方法名即可,也默认为public abstract。

    (4)接口里面的所有成员都是公共的,抽象类里面的成员可以是私有的,公共的,受保护的。

    (5)一个类继承于一个接口,就必须完成接口中所有方法的实现。

    (6)接口不能包含字段、构造函数、静态变量或者常量等。

  5.泛型:为避免反复装箱拆箱过程,所以引入泛型。它将装入的数据类型声明好,只允许此种类型的数据加入。在System.Collections.Generic命名空间中。

    非泛型集合类与泛型集合类的对照关系:ArrayList---List<T>;HashTable---Dictionary<T>;Stack---Stack<T>。

后记:课下学习。

时间: 2024-10-10 00:21:55

ASP.NET动态网站制作(21)-- C#(4)的相关文章

ASP.NET动态网站制作(3)--css(2)

前言:css分为四次课讲完,第一节课内容见ASP.NET动态网站制作(2)--css(1),接下来的内容会涉及到定位.浮动.盒子模型(第二次课).css的具体应用(第三次课).css3(第四次课).今天的内容是关于css中定位.浮动以及盒子模型. 内容:CSS最核心的内容,围绕div标签展开. 1.做静态网页首先要考虑页面的布局,可用<div></div>来将网页分为不同的模块,就相当于盖房子一样. 2.<div></div>是一个块元素,与之相对应的还有行

ASP.NET动态网站制作(30)-- WEBService

前言:继续讲正则表达式,然后介绍一下webservice. 内容: 1.匹配QQ号的正则表达式:^[1-9]\d{4,10}$:匹配手机号的正则表达式:^(0|86)?(13|14|15|18)[0-9]{9}$:匹配身份证号的正则表达式:^[1-9][0-9]{14}([0-9]{2}[0-9Xx]?)$. 2.js里面的正则:使用test(). 3.C#里面的正则: 1 string strQQ=txtQQ.Text.Trim(); 2 bool b = Regex.IsMatch(strQ

ASP.NET动态网站制作(17)-- C#(1)

前言:用C#也有一年多了,基本上都是边用边学的,现在可以跟着老师系统的学习一下,感觉应该挺好的. 内容: 1.网站部署的相关内容:  (1)想要做一个网站,首先得去买一个域名,老师的域名是在美橙上买的.如果允许,可以把相应的.com,.cn,.net都注册掉,不然公司做大了就麻烦了.网站是放在服务器的硬盘上的,服务器的硬盘区域就叫做网站空间,所以买了域名之后就需要买网站空间.本地文件上传到网站空间上通过FTP上传.买的时候需要注意参数,最主要的看一下“支持语言”中的 .net 版本以及数据库.

ASP.NET动态网站制作(7)-- JS(2)

前言:这节课是JS的第二节课,主要是JS中的控制语句. 内容: 1.条件语句:  (1)比较操作符:==,!=,>,>=,<,<=.字符串大小写转换:toUpperCase().toLowerCase().  (2)逻辑运算符:&&(与运算).||(或运算).!(非运算).  (3)if语句:if(条件){...} else if(条件){...}else{...},注意if与else的匹配问题. if(iNum1>iNum2) { iNum3=iNum1;

ASP.NET动态网站制作(24)-- ADO.NET(3)

前言:ADO.NET的第三节课.今天主要讲SQL Helper. 内容: 1.DataReader和DataSet的区别: (1)DataReader是一行一行地读,且只能向前读:DataSet是一次性读取出来放到内存中,所以,DataReader读取速度更快,占用内存更低. (2)DataReader需要一直和数据库保持连接,DataSet读取完后即和数据库断开. (3)DataSet里面可以存储多个结果集(DataTable). (4)DataSet可以对数据进行缓存,而DataTable不

ASP.NET动态网站制作(13)-- JQ(5)

前言:jq的最后一节课,主要讲解应用, 内容: 1.会飞的li: HTML代码: 1 <!DOCTYPE html> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 5 <title>会

ASP.NET动态网站制作(12)-- JQ(4)

前言:这节课接着上次课的继续讲. 内容:接上--> 1.jq元素样式设置:  (4)某个元素中是否含有某个css类别,返回布尔型:$("li:last").hasClass("myClass");  (5)直接获取.编辑内容:html(text);text(content); 1 $("p").click(function(){ 2 var sHtmlStr = $(this).html(); 3 $(this).text(sHtmlStr

ASP.NET动态网站制作(11)-- JQ(3)

前言:这节课主要是讲CSS作业,然后继续讲jQuery. 内容: 1.css作业讲解. 2.jq设置元素样式:  (1)添加.删除css类别:$("div").addClass("myClass1 myClass2");$("div").removeClass("myClass1");  (2)类间动态切换: 1 $(function(){ 2 $("p").click(function(){ 3 $(th

ASP.NET动态网站制作(6)-- JS(1)

前言:JS的第一节课,在Visual Studio 2013中编写及运行.新建项目->Web->ASP.NET Web应用程序->Empty,打开后在项目下添加新建css文件夹和js文件夹等.一个解决方案就是一个.sln文件,一个解决方案里可以有多个项目文件. 内容: 1.JS(JavaScript)是一种脚本语言,结构简单,使用方便,其代码可以直接放入HTML文档中,可以直接在支持JavaScript的浏览器中运行.JavaScript使得网页的交互性更强,更生动灵活.当在浏览网页时做