面向对象基础进阶02

一:面向对象的三大特征

封装,继承,多态

封装

1:封装的概念及作用

     *通过使用private和public修饰符来修饰类的成员(字段,属性,方法等)这样有效的使私有数据和方法不被外界访问,这种使用特性就是封装;

     *一个属性,一个方法也是封装,类是对属性和方法的封装;

     *封装是面向对象中的一个重要特征,面向对象的三个重要特征为:封装,继承,多态;

     *作用<模块化和数据隐藏>

2:类是模版,确定的对象将会拥有的特征(属性)和行为(方法);任何对象将会属于一个类中;

3:对象是以类为模版而创建的,是类的实例化,具体化;

4:面向对象的好处

      *封装使得开发人员更加关注自己的需求;

      *一个类定义之后可以多次使用,避免重复赋值;

5:类试图 对于类的总体结构的展示;类(右键-----查看类图)

6:类的祖先(object)

      *Object类是所有类的父类(祖先类),因此任何一个类都可以转换成object类型;

      *可以将任何类型的值赋予object类型的变量;

装箱:将值类型的变量转换为<object>对象的过程叫做装箱;

拆箱:将<object>对象类型的变量转换为值类型的过程叫做拆箱;

继承

     *一个类继承另一个类,第一个类叫做子类,另一个叫做父类,子类继承父类,即子类就拥有了父类的属性和方法,可以重写<override>父类的方法和属性,同时子类也可以编辑自己的属性和方法。<Object类>

     *子类不能继承父类的私有成员

     *子类只能有一个父类,但是作为父类的类可以是多个子类的父类。

1:关键字Virtual

   Virtual关键字用于指定属性或方法在派生类中重写. 默认情况下,派生类从其基类继承属性和方法,如果继承的属性或方法需要在派生类中有不同的行为,则可以重写它,即可以在派生类中定义该属性或方法的新实现,这时在基类中该属性或方法必须用virtual关键字修饰.virtual关键字用于指定属性或方法时可以在派生类中重写.具有virtual关键字的方法或属性被称作虚拟成员.
   在基类(父类)中用virtual修饰符声明一个虚方法,然后在在派生类(子类)中用override修饰符覆盖基类虚方法。表明是对基类的虚方法重载。这种优势在于它可以在程序运行时再决定调用哪一个方法,这就是所谓的“运行时多态”,或者称动态绑定。

class A
{
    public virtual void F(){}
}                                                         

class B:A
{
    public override void F(){}
}

多态  <编译时多态,运行时多态>

   *和重载的定义一样,可以这样说重载也多态的一种。

   *定义类的继承发生在多个类之间,而类的多态发生在同一个类上,在一个类中可以定义多个同名方法,只要确定了它们的参数个数和类型不同。

理解下面这段话就了解了多态.

覆盖: 就是子类有和父类重名的方法和属性,此时父类的方法就被子类的覆盖掉了。相当于修改父类的方法。

二:对象数据类型与对象销毁

1:基本数据类型{int,double,bool.....},值类型;

  引用数据类型{数组,对象,string},对象类型;

2: *引用类型变量传递时,将自己的内存地址赋给新变量{指针};

   *值类型变量传递时,将自己复制一份;

这里值类型保存在栈里面,而引用类型,一部分保存在堆里面,一部分保存在栈里面.

3:ref关键字

   可以将值类型变量按照引用方式传递;{实际开发中不建议经常使用ref关键字}

   引用传参,必须进行初始化,

4:out关键字

   可以让方法有多个返回值,侧重输出,引用传参,可以不进行初始化,但是必须在方法里面进行赋值。<return多个返回值的方法里面>

5: Params:当需要多个参数时,才会用到。数组类型参数。

6:对象的销毁

  垃圾回收机制(GC)

   *.net虚拟机特有的机制,自动运行,并检查对象的状态;

   *发现对象不被引用时,会将其释放所占空间;

   *在实际的应用中我们可以自己调用GC来帮助我们清理一些我们不需要的变量和字段。

三:非泛型集合

1:ArrayList是一个长度可变的“数组”,通常成为集合,类似于数组的结构,其中最大的特点是:可以自由的扩展元素个数;

2:ArrayList集合的特点

   *元素都被转换成object类型

   *使用Add方法可以随意添加元素,无个数限制;

   *使用Remove方法可以删除指定元素,元素删除后索引自动调整;

   *通过索引访问元素,元素取出的时候需要强制转换成特定数据类型;

3:Arraylist的具体插入,删除代码;

4:ICollection<T>泛型的知识

   * IList<T>继承自ICollection<T>,ICollection<T>继承自IEnumerable<T>,IEnumerable<T>继承自IEnumerable

所以List<T>实现了IList<T>接口,也就是实现了IEnumerable接口

   * IEnumerable<T>是IEnumerable接口的泛型版本。使用泛型,不会强行对值类型进行装箱和拆箱,或引用类型进行向下强制类型转换,使程序性能提高。泛型定义的变量有类型限制,所以泛型提高了程序的类型安全。  泛型还提高了代码的重用性。

四:泛型集合list<T>与Dictionary的使用

1:List<T>使用前的准备工作

  *引入命名空间:System.Collections.Generic

  *确定存储类型:List<Student> student=new List<student>();

常用方法

  *添加元素:Add(<T>);

  *删除元素:RemoveAt(索引);

  *元素个数:count

遍历集合

   Foreach(Student stu in students)

   {

   Console.writeline(stu.studentName);

   }

2:泛型集合的最大特征:严格约束集合内的元素类型;

3:集合初始化器

  创建集合对象时直接初始化,非常类似与数组;

4:Dictionary<k,v>通常称为字典

   *<k,v>约束集合中的元素类型

   *编译时检查类型约束;

   *无需装箱拆箱操作

   *与哈希表操作类视

 

时间: 2024-10-16 18:18:24

面向对象基础进阶02的相关文章

面向对象基础进阶03

一:对象的排序和接口 1:List<T>中的元素排序,基本数据类型元素排序 调用Sort()方法按字母升序,降序排序: 调用Reverse()方法,实现元素反转: 2:利用下面代码实现了排序 3:关于接口 概念:   *接口就是一个类的声明,里面可以有属性,方法,但是方法中没有任何方法体,仅仅对方法的签名做了个约束.   *不同的类可以实现相同的接口,方法的内容可以根据需要编写. 接口的作用:   *为调用者提供方便,实现不同的功能: 接口的系统:   *系统接口,由.net平台规定,程序员只

java基础学习05(面向对象基础02)

面向对象基础02 实现的目标 1.String类的使用 2.掌握this关键字的使用3.掌握static关键字的使用 String类 实例化String对象一个字符串就是一个String类的匿名对象,就是已经开辟了堆内存空间的并可以直接使用的对象.1.采用直接赋值的方式进行操作. String name = "zhangsan"; 使用这种方式,如果一个字符串已经被一个名称所引用,则以后再有相同的字符串声明时,就不会再开辟内存空间.2.直接调用String类的构造方法(public S

Python基础-第七天-面向对象编程进阶和Socket编程简介

本篇内容: 1.面向对象编程进阶-静态方法 2.面向对象编程进阶-类方法 3.面向对象编程进阶-属性方法 4.面向对象编程进阶-特殊成员(内置方法) 5.面向对象编程进阶-反射 6.异常处理.断言 7.Socket编程简介 一.面向对象编程进阶-静态方法 1.静态方法的实现 通过@staticmethod装饰器可以把其装饰的方法变为一个静态方法: 变成静态方法后,形参中可以不用写self了.如果写了self,默认是不会把对象本身传递给self,需要手动传递: class Dog(object):

【 .NET 面向对象程序设计进阶》】【 《.NET 面向对象编程基础》】【《正则表达式助手》】

<.NET 面向对象程序设计进阶> <.NET 面向对象程序设计进阶> <正则表达式助手>

3.2面向对象基础语法

面向对象基础语法 目标 dir 内置函数 定义简单的类(只包含方法) 方法中的 self 参数 初始化方法 内置方法和属性 01. dir 内置函数(知道) 在 Python 中 对象几乎是无所不在的,我们之前学习的 变量.数据.函数 都是对象 在 Python 中可以使用以下两个方法验证: 在 标识符 / 数据 后输入一个 .,然后按下 TAB 键,iPython 会提示该对象能够调用的 方法列表 使用内置函数 dir 传入 标识符 / 数据,可以查看对象内的 所有属性及方法 提示 __方法名

[.net 面向对象程序设计进阶] (5) Lamda表达式(二) 表达式树快速入门

[.net 面向对象程序设计进阶] (6) Lamda表达式(二) 表达式树快速入门 本节导读: 认识表达式树(Expression Tree),学习使用Lambda创建表达式树,解析表达式树. 学习表达式在程序设计中的优点:比如构造动态查询.动态构造表达式树完成未知对象属性访问,比反射的性能高出很多.我们可以说表达式树才是Lambda的精髓,是我们必须要熟练掌握并灵活运用的. 1.关于表达式树(Expression Tree) 表达式树以树形数据结构表示代码,其中每一个节点都是一种表达式,比如

[.net 面向对象程序设计进阶] (14) 缓存(Cache) (一) 认识缓存技术

[.net 面向对象程序设计进阶] (14) 缓存(Cache)(一) 认识缓存技术 本节导读: 缓存(Cache)是一种用空间换时间的技术,在.NET程序设计中合理利用,可以极大的提高程序的运行效率. 本节将介绍如何利用缓存写出高效率的代码. 1. 什么是缓存(Cache)? 缓存(Cache)是一种用空间换取时间的技术 存在于计算机中很多地方,用来将一些慢速设备中的常用数据保存在快速设备中,取数据的时候直接从快速设备中取. 比如CPU二级缓存.内存.windows文件读取缓存. 2. .NE

进击的Python【第七章】:Python的高级应用(四)面向对象编程进阶

Python的高级应用(三)面向对象编程进阶 本章学习要点: 面向对象高级语法部分 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 一.面向对象高级语法部分 静态方法 要在类中使用静态方法,需在类成员函数前面加上@staticmethod标记符,以表示下面的成员函数是静态函数.使用静态方法的好处是,不需要定义实例即可使用这个方法.另外,多个实例共享此静态方法. 类方法 类方法与普通的成员函数和静态函数有不同之处,在接触的语言中好像也没见过这种语义,看它的定义: 

[.net 面向对象程序设计进阶] (26) 团队开发利器(五)分布式版本控制系统Git——图形化Git客户端工具TortoiseGit

[.net 面向对象程序设计进阶] (26) 团队开发利器(五)分布式版本控制系统Git——图形化Git客户端工具TortoiseGit 读前必备: 接上篇: 分布式版本控制系统Git——使用GitStack+TortoiseGit 图形界面搭建Git环境 http://www.cnblogs.com/yubinfeng/p/5182271.html 本篇导读: 上篇介绍了一款Windows环境下的Git服务器工具GitStack ,搭建了最简单的Windows下的Git服务器,需要再次提醒的是