面向对象基础进阶02

简介: 面向对象基础进阶02

一:面向对象的三大特征


封装,继承,多态


封装


1:封装的概念及作用


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


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


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


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


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


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


4:面向对象的好处


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


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


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


6:类的祖先(object)


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


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


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


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


679140-20151023095400349-1572723924.jpg

继承


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


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


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


1:关键字Virtual


   Virtual关键字用于指定属性或方法在派生类中重写.  默认情况下,派生类从其基类继承属性和方法,如果继承的属性或方法需要在派生类中有不同的行为,则可以重写它,即可以在派生类中定义该属性或方法的新实现,这时在基类中该属性或方法必须用virtual关键字修饰.virtual关键字用于指定属性或方法时可以在派生类中重写.具有virtual关键字的方法或属性被称作虚拟成员.  


  在基类(父类)中用virtual修饰符声明一个虚方法,然后在在派生类(子类)中用override修饰符覆盖基类虚方法。表明是对基类的虚方法重载。这种优势在于它可以在程序运行时再决定调用哪一个方法,这就是所谓的“运行时多态”,或者称动态绑定。

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

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


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


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


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

679140-20151023095401692-111293119.jpg

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



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


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


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


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


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


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


3:ref关键字


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


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


4:out关键字


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


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

679140-20151023095403161-1066776738.jpg

6:对象的销毁


 垃圾回收机制(GC)


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


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


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



三:非泛型集合


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


2:ArrayList集合的特点


  *元素都被转换成object类型


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


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


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


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

679140-20151023095405989-901242213.jpg

4:ICollection泛型的知识


  * IList继承自ICollection,ICollection继承自IEnumerable,


IEnumerable继承自IEnumerable


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


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



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


1:List使用前的准备工作


 *引入命名空间:

System.Collections.Generic


 *确定存储类型:

List<Student> student=new List<student>();


常用方法


 *添加元素:Add();


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


 *元素个数:count


遍历集合

Foreach(Student stu in students)
{
Console.writeline(stu.studentName);
}

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


3:集合初始化器


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


4:Dictionary通常称为字典


  *约束集合中的元素类型


  *编译时检查类型约束;


  *无需装箱拆箱操作


  *与哈希表操作类视


679140-20151023095407692-445716663.jpg

679140-20151023095410177-1021997081.jpg




目录
相关文章
|
5月前
|
算法 编译器 C语言
C++进阶之路:深入理解编程范式,从面向过程到面向对象(类与对象_上篇)
C++进阶之路:深入理解编程范式,从面向过程到面向对象(类与对象_上篇)
64 3
|
6月前
|
人工智能 运维 Java
面向对象进阶
面向对象进阶
66 0
|
机器学习/深度学习 存储 算法
|
设计模式 算法 搜索推荐
C++的编程思想和进阶编程
● 一个模式描述了一个不断发生的问题以及这个问题的解决方案;模式是前人的设计经验上总结出来的对于一些普遍存在的问题提供的通用的解决方案;比如单例模式、观察者模式等 ● 软件中有很多模式 面向对象常见的23中设计模式; 反模式;企业应用架构模式等
52 0
|
存储 开发框架 Java
|
编译器 Python Windows
Python编程基础:面向对象编程
巩固Python面向对象编程一些基础知识,学习有关类的创建使用,以及类的属性方法使用等一些基础操作。
82 0
Python编程基础:面向对象编程
|
Java Android开发
Java面向对象程序设计基础实战
Java面向对象程序设计基础实战
220 0
|
存储 PHP 开发者
面向对象基础总结|学习笔记
快速学习面向对象基础总结
|
Java Scala 开发者
面向对象编程介绍和入门案例|学习笔记
快速学习面向对象编程介绍和入门案例。
|
存储 安全 数据库
面向对象基础进阶01
面向对象基础进阶01
119 0
面向对象基础进阶01