关于C#--面相对象基础总结

A1 10.1号,祖国生日时候,我开始痛下决心决心以后搞软件,一副苦大仇深的样子,想把《Head first C#》看完。期间挫折丛丛,最大的错误在于想把这本书快速看完,忽视了效率 ,终于快看完了,才知道没有做笔记,理解不透彻,有的地方甚至模糊。明白:好的学习方法是最大的效率。急于求进度,往往导致,结果自己不能接受,遇到问题,不去解决,只会更加纠结。做完,在床上,入睡前,随手捡一本书翻翻《大话设计模式》,瞬间我如痴如醉,很多模糊的概念也能理顺了,花了一上午,把一些C#一些概念重新梳理下,于是这篇总结诞生了。这篇很多内容取自《大话设计模式》。

A2 类与实例

类:就是具有相同的属性和功能的对象的抽象的集合。

实例:实例就是一个真实的对象,而实例化就是创建对象的过程,使用new关键字。

Cat cat = new Cat() ; 是用new,将Cat类实例化,创建实例cat。

A3 构造方法

构造方法,即构造函数。其功能就是对类进行初始化。构造方法与类同名,无需返回值,也不需要void。

Cat cat = new Cat() ;  Cat() 就是构造函数,对Cat 进行初始化。

Class Cat

  {

    private string name = "" ;

    public Cat (string name)

    {

      this.name = name ;

    }

  }

A.4 方法重载

方法重载:提供了创建同名的多个方法的能力,但是这些方法需要使用不同的参数类型。

Class Cat

  {

    private string name = "" ;

    public Cat (string name)

    {

      this.name = name ;

    }

    public Cat()

    {

      this.name = "无名";

    }

  }

注意的是:方法重载时,必须要方法名相同,参数类型或个数必须要有所不同。

重载可以在不改变原方法的基础上,增加新功能。

A.5  属性与修饰符

属性是一个方法或一对方法,但在调用它的代码来看,它是一个字段,即属性适合于以字段的方式使用方法调用的场合。

private int shoutNum = 3 ;

public int ShoutNum

{

  get {return shoutNum ;}

  set {shoutNum = value ;}

}

get :get访问器 返回与申明的属性相同的数据类型,表示的意思是调用时可以得到内部字段的值或引用;set; set访问器没有显示设置参数,但它有一个隐式参数,用关键字value表示,它的作用是调用属性时可以可以给内部的字段或者引用赋值。

总结:变量私有的叫字段,共有的叫属性。

A6 封装

传说中面向对象三大特征:封装,继承,多态;三个常用的修饰符:piblic private protected .

每个对象都包含它能够进行操作所需要的所有信息,因此对象不依赖其他对象来完成自己的操作,我们称之为:封装。

Dog dog = new Dog() ;//其中Dog()我们把它封装了,然后就可以调用Dog()了,但是外在无法修改它。

A7 继承

对象的继承代表了一种 is-a 关系,如果有2对象,A和B,可以描述为B是A,则表明B可以继承A(狗是动物,则狗可以继承动物的一切方法属性,private除外)。

如果子类继承父类:(1)子类拥有父类除private的属性和功能。(2)子类具有自己的属性和功能,即子类可以扩展父类没有的属性和功能.(3)子类还可以以自己的方式实现父类的功能。

对于构造函数,它不能被继承,只能被调用。

Class Dog : Animal

  {

  }

继承的缺点:1 父类变,子类不得不变。 2 继承会破坏包装,父类的细节暴露给子类。

A8 多态

多态表示不同的对象可以执行相同的动作,但要通过它们自己的实现代码来执行。

注意三点:(1)子类以父类的身份出现(2)子类在工作时以自己的方式来实现。(3)子类以父类的身份出现时,子类特有的属性和方法不可用。

为了使子类的实例完全接替来自父类的成员,父类必须将该成员声明为虚拟的(virtual)。子类可以使用override关键字,将父类实现替为自己的实现,这就是 重写 Override .

Class Animal

{

  public virtual string Shout()

  {

  }

}

Class Dog : Animal

{

  public override string Shout()

  {

  }

}

A 9 重构

理解不够透彻,下次再写吧。

A 10 抽象类

c#准许把类和方法申明为abstract , 即抽象类和抽象方法。

需注意几点:(1)抽象类不能实例化(2)抽象方法必须是被子类重写的方法。(3)如果类中包含抽象方法,那么类就必须定义为抽象类,不论是否包含其他方法。

A 11 接口

实现接口的类就必须实现接口中所有的方法和属性

一个类可以支持多个接口,多各类也可以支持相同接口。

接口用interface 进行申明,前面加上 I 。

接口与抽象3个区别:

1 类是对对象的抽象,抽象类是对类的抽象,接口是对行为的抽象。

2 如果行为跨越不同的类,可以用接口。对于一些相似的类,用继承抽象类。

3 从设计角度讲 ,抽象类是从子类中发现公共的东西,泛化出父类,然后子类继承父类,而接口是根本不知子类的存在,方法如何实现还不确认,预先定义。

  

A 12 集合

数组优点:在内存中是连续的,运算速度快。

.NET Framework 提供了数据存储和检索的专用类,这些类型统称集合。这些类提供对堆栈,队列,列表,哈希表的支持。

A 13 泛型

泛型集合首先需要 System.Collection.Generic的命名空间。

List类是ArrayList 类的泛型等效类。

A 14 事件与委托

下次写,还不太透彻

总结:所有知识点都需要实践,等《First Head》看完了,就看《模式设计》,多敲代码。

时间: 2024-10-13 02:22:05

关于C#--面相对象基础总结的相关文章

10分钟学会php面相对象基础(Ⅳ)

子曰:"温故而知新,可以为师矣" 一二三中的内容,整理目录如下: 建立 class person{...} 实例化class   $p1 = new person(); 继承类 class children extend person{...} 继承中说到了可以增加自己的属性和方法: 两个方法 构造方法 __construct 和 析构方法 __destruct; private,protected,public这三种等级的属性.方法已经调用的限制: 可以通过__construct 来

10分钟学会php面相对象基础(Ⅴ)

继续前面的 abstract 抽象方法和抽象类:只有方法名称,没有方法体{},用abstract修饰: 只要类中有一个抽象方法,这个类就必须定义为抽象类: abstract function fun1(); abstract function fun2(); abstract class person(){ abstract function born(); }

10分钟学会php面相对象基础(下)

final 可以适用final 定义类或者方法,这样定义的是最终方法或类,这样的方法或类不能被覆盖: final class Person {     function say()     {     } }

2016.8.07 对象基础

写在前面:今天我将发表函数基础.对象基础.this.new.封装.封装例子  这几篇个人理解文章.最好能一口气看完,并自己写下,相信会对想要理解函数和对象的朋友们会有一些帮助. 目录:对象前言.自定义对象.对象for-in(对象没有length属性) 对象前言: 对象的作用: 对象可以帮助我们封装一些数据,方便我们在程序中的传输或是控制, 第二个,对象可以帮助我们描述一些事物 一个是程序中,比如 Math, Array, function 二个是现实生中的事物: 笔记本,汽车,人,学生或是老师

J2SE基础:1.类和对象基础

什么是对象 在Java语言,所有的人,事物或者模块都是一个对象. 相同的对象具有一些相同的特性. 狗,猫,蛇3个对象(动物的对象) 苹果,梨,桔子3个对象(水果的对象) 什么是类 可以将现实生活中的对象经过抽象 这种抽象数据类型称为类. 动物类(Animal) 水果类(Fruit) 类和对象的关系 类是对象的模板(抽象化表示),对象是类的实例化(具体化的展现) 类的组成结构 Java是纯面向对象(除了8种基本数据类型) 而对象是从类产生的.因此类是组成Java程序最基本也是最核心的 元素. 变量

类和对象基础题

一.           类和对象基础题 1.编写一个Java应用程序,该程序中有3个类:Ladder.Circle和主类A.具体要求如下:Ladder类具有类型为double的上底.下底.高.面积属性,具有返回面积的功能,包括一个构造方法对上底.下底.高进行初始化.Circle类具有类型为double的半径.周长和面积属性,具有返回周长.面积的功能,包括一个构造方法对半径进行初始化.主类A用来测试类Ladder和类Circle的功能. 2.按要求编写Java应用程序: (1)编写西游记人物类(

js编程-面相对象

//js面相对象编程 //定义constructor构造方法 function myFn(name,sex){ this.name = name; this.sex = sex; } //用prototype追加属性方法 myFn.prototype.getName = function(inter){ console.log(this.name); console.log("兴趣:" + inter); return this.name; } //实例化myFn var newMy

ExtJS教程(2)--- Javascript类和对象基础知识

Javascript中的类其实就是一个function 如下面定义一个Person类 //定义一个类 function Person(){ this.name = 'jaune'; this.age = 18; } //创建一个对象 var person1 = new Person(); console.log(person1); /* * 控制台打出以下内容 * Person {name: "jaune", age: 18} */ 上面是一个简单的定义类及创建类的方法 //定义一个带

8.python之面相对象part.6(反射&__call__,__setattr__,__delattr__,__getattr__)

一.什么是反射? 反射,又被称为自省,主要是指程序本身可以访问,检测,和修改"自己",状态或行为的一种能力. 二.python是如何体现这种反射机制的? 通过字符串去操作对象相关的属性,python中,一切皆对象,所有的地方都可以用到反射. python内部提供了四个实现反射(自省)的函数,这四个函数可以适用于任何的类和对象(这是因为类本身也是一个对象!) 1.hasattr(object,str) 用来检测一个对象中是否有某个字符串对应的方法或者属性. 例如: l1 = [] pri