你的位置:首页 > ASP.net教程

[ASP.net教程]面向对象基础进阶01


前言:面向对象编程是现如今编程的大环境,所以再次回顾面向对象的知识是非常有必要的。

一:类与对象

1:软件系统

输入{用户界面}  运算{业务逻辑}

存储{数据库}    输出{界面或其他文件}

2:对象的了解

   对象是身边的一些常见的事物,主要了解对象之间区别; 

对象区分的重要因素:

静态特征(属性,表示对象“什么样子”) 

动态特征(方法,表示对象“能干什么”)

3:面向过程和面向对象

面向过程:就是比较注重做每一件事情的过程,步奏,流程。关注点为小的细节

面向对象:是具有一些特性和动作的东西,关注点为最后的结果。

4:理解面向对象编程

   *它的核心是对象

   *对象为现实世界的实体,而面向对象编程就是将这些实体模拟到计算机程序中,实现相关的功能。

   *根据需要编写各种对象,并将其对象建立一定的关系;

5:封装的概念

   *就是将一些小的对象放在一起,然后以一个新的对象呈现出来,封装使得一个对象的内部变得隐藏,从而更加安全;

   *将属性和方法放在一个类里面,类就可以看做是一个黑箱,只能在外面看到一些公共的方法和属性。<模块化和数据隐藏>

   *定义用操作方法把数据封闭到类中,形成以数据为核心,方法为外壳的类。

6:类的概念

   *对象是类中的一个实例,将对象的共同特征抽取出来,这些共同的属性和方法被组织在一个单元中,就被就做类;

    *类是具有相同属性和共同方法(行为)的一组对象的集合

   *类的属性:对象或实体所拥有的静态特征,在类中表示称为类的属性;

   *类的方法:对象或实体所拥有的动态特征,在类中表示为类的方法;

7:类与对象的区别 <自行车和设计自行车图纸的关系>

  *类是一个概念模型,在这个模型中,规定对象的属性和方法;

  *对象是一个实体;

8:类模版的定义

  访问修饰符  class   类名

   定义字段;

   定义属性部分;

   定义方法部分;

} 

*定义类名:名词,首字母大写Passal命名法;

*编写类的字段,属性;*编写类的方法,接口;【独立完成某个功能的单元模版】(学会理解类的组成,并且在这其中要学会应用)

9:字段:叫做成员变量(全局变量);

{字段和属性都是用来描述类的静态特征}方法中定义的变量叫做局部变量;二者的作用域不同;

10:对象的创建过程

Static void Main(string []ardes)  { //定义字段  Private int studentId;  Private string studentName; //定义属性Public int StudentID{ get{return studentId;} Set{studentId=value;}}Public string StudentName {get{return studentName;}set{studentName=value}}//获取信息{定义方法}Public string GetStudent(){String info=string.format(“姓名:{0},学号:{1}”,studentName,studentId);Return info;}} 

11:关于对象的调用

//创建对象Student objStudent=new Student();//给对象属性赋值objStudent.StudentId=1001;objStudent.StudentName=”阿辉”;//显示对象的属性(调用方法)String info=objStudent.Getstudent(); //类名.方法名Console.writeline(info);Console.readline(); 

二:字段与属性

1:访问修饰符

作用:限制对象的属性或方法可访问的范围(作用于类的内部和外部)

类型:

   private(私有的:外部不可见,不可访问,只在本类可以访问,默认的)

   Public(公有的:外部可见,外界可以访问)

   Protect(受保护的:只在本类和子类中被访问)

   Intemal(只在本项目中被访问)

2:在方法中如果去掉public,则系统自动变为private,对于private修饰符外界不可访问,如果访问会报错,而且通过(.运算)不可自动出现;

3:字段(类的成员变量)

字段一般用private来修饰(是我们的私有财产),通常只供类的内部的不同方法使用;

4:属性(描述静态特征){是什么,具有什么特有的属性}

       字段私有化,属性是公有化;其中有get();set();通过value将外部值赋私有字段;

       属性是外界访问私有字段的入口,属性本身不保存任何数据;属性中的get,set;

       Get为读取时返回字段的值,set外部来赋值;

5:使用属性避免非法数据{在get,set中加入if,,else进行判断}

6:可以将属性设置为只读;{无set方法,无法为其赋值}

7:没有对应私有字段的属性,属性内部可以添加如何需要的业务代码,如方法的调用;{其属性处理属性的能力超强}

8:字段与属性比较

   字段(成员变量)为类的内部做数据交互,字段一般是private(私有的)的;可以为其赋值,也可以获取字段的值,当需要为外部提供数据时,请将字段封装为属性,不要去使用共有的字段;

   属性一般向外界提供数据,主要描述数据对象的静态特征,一般用public,可设置为只读,只写属性,提高数据的安全性。也可以在内部添加业务逻辑,避免非法数据;

三:类的方法和构造方法

1:方法表示一个类或对象能够实现的操作,即对象的动态特征。一个类中主要是通过方法把字段和属性的值传递出去;

分类:实例方法,静态方法,构造方法,抽象方法,虚方法;

2:方法的作用

  *规定了类主要实现的功能;

  *方法封装在类里面,外界调用时不需要了解内部细节,体现了其“高内聚”“低耦合”特性;

3:书写类中方法的错误集合

    *忘记返回值,提示并非所有路径代码都有返回值;

    *返回值定义的类型与返回值数据的类型不同;

    *变量在使用中超出作用域

4:构造方法的调用优先与其他的方法,其中参数的传递和一般的方法传递一样;

这里的调用是因为我们每一次使用对象的时候都会New一下,这里就调用了类中默认的构造方法,这里可以进行重载的实现,当你想为其进行初始化时。

5:构造方法可以进行初始化,使用有参数的构造方法可以避免用户单个初始化对象属性的麻烦;在构造方法中统一初始化就可以使程序变得更加美观;

6:构造多个构造方法

构造方法自身调用时用{:this(stuld,stuName)}完成自身方法的调用;

7:构造方法与实例方法的区别

构造方法:

*用于对象的初始化,一个类中至少有一个构造方法;

*不能显示调用,只能在创建对象时使用new来调用;

*无返回值;无括号包裹;

*构造方法名称必须与类名一样;

实例方法:

*用于表示对象能够干什么,一个类中可以没有任何实例方法;对象的动态特征;

*只能显示调用:对象名.方法名。

*可以有返回值,没有时必须以void表示;

*方法的命名要有意义,不能与类名相同; 

8:对象初始化器

wps9866.tmp

中间的语句块,必须以“,”分隔;

*只能初始化属性值;

*只能在调用者中使用,而构造方法初始化必须写在类中;<CTOR>

9:方法的重新定义(三种)

wps9876.tmp

10:this关键字

*this表示当前类的对象,用于访问该类成员变量或方法;

*当成员变量和局部变量重名时使用this区分;

这里还有个base关键字,当我们的类继承字别的类时,我们通过base来直接使用父类。