• 面向对象


    面向对象概论

    面向对象理论很早就被提出了,但它真正地渗透到软件开发的各个领域,并且在软件开发实践中大规模使用,却要追寻到上世纪九十年代。到目前为止,面向对象技术已是软件开发的主流,全面取代了结构化编程技术曾经具有的地位。

    面向对象技术与结构化编程技术有着不同的风格,但同时也有着密切的联系。从具体编程角度来看,面向对象技术与结构化编程技术很难截然分开,两者的根本差别在于思维方式。

    面向对象的核心概念

    1.封装

     封装的类=数据+对此数据进行的操作(即算法)

    在面向对象理论中,封装这个概念拥有更宽广的含义,小到一个简单的数据结构,大到一个完整的软件子系统。

    具备封装的意识,是掌握面向对象分析与设计技巧的关键。

    2.抽象

    在使用面向对象的方法设计一个软件系统时,首先要区分出现实世界中的事物所属的类型,分析它们拥有哪些性质与功能,再将它们抽象为在计算机虚拟世界中才有意义的实体--类。

    3.继承

    在计算机世界中,以面向对象的观点不仅将上述事物抽象为类,而且将事物之间的派生关系也一并模拟出来,这种关系称为继承。

    1.父类的相关成员,会自动派生到子类去。public protected
    2.子类可以扩展父类的相关成员。
    3.子类可以替代父类来使用,但父类不能替代子类来使用。

    4.多态

    用比较抽象事物来取代具体事物的表达方法,在面向对象软件中用“多态”这一特性来模拟

    一、类的基本概念
    (一)类的基本了解。
    类:自己定义的一种复杂的类型。
    类一般包括两大部分:字段-成员变量(名词或形容词),方法-成员函数(动词)
    类的关键词:class
    (二).类的定义:
    class 类名
    {
     成员变量的定义;
     ...
     成员函数的定义;
     ...
    }
    在类的成员(成员变量,成员函数)前面经常会加访问修饰符(public private protected)

    (三).类的使用:

    Dog d = new Dog(); //实例化

    d.Name = "旺财";

    d.Owner = "张三"; d.Run();

    d - 对象的引用。 new Dog() - 真正的狗的对象。

    (四)附加: C#中的变量的类型:

    1、值类型: int float double char bool struct datetime

    2、引用类型: string 数组 自定义的类。 模型图:堆空间与堆空间。

    1.用模型图解释: A a1 = new A(); A a2 = new A(); Console.WriteLine(a1== a2);  //结果为什么是false?

    2.用模型解释:上面狗的例子,为什么最后d.Run()会显示成李家的狗?

    3.用模型解释:int a = 100; int b= 100; Console.WriteLine(a == b);结果为什么是true?

    类的封装:不要随便把成员变量设成public,一般需要设成private或protected,通成员方法或成员属性来实现对成员变量的合法访问。

    二、类的成员——属性

    属性:对成员变量进行访问的端口。

    (一)属性的定义: public 类型 属性名 {  get  {  }  set  {   关键词value.代表是要赋的值。  } }

    (二)属性的使用: 直接通过属性名进行使用。 Console.WriteLine(r.Height); - 调用属性的get部门 r.Height = 180; -调用属性的set部分。

    三、类的方法——成员函数——方法重载 方法的名子相同,参数不同(类型不同,个数不同)——形成了方法的重载。 重载方法与返回类型无关。 好处: 1.减少方法名的定义,不用记太多的方法名了。 2.减少代码重复,更大限度的重用,代码结构更合理。

    多个重载方法被调用的时候,首先找方法名,然后再根据参数找对应的重载方法。

  • 相关阅读:
    动态规划算法介绍——概念、意义及应用、例题
    两个大数相减
    删除apache的签名的shell脚本
    C++中智能指针的设计和使用
    eclipse save action不起作用
    [leetcode]51. N-QueensN皇后
    [leetcode]33. Search in Rotated Sorted Array旋转过有序数组里找目标值
    [leetcode]88. Merge Sorted Array归并有序数组
    [leetcode]636. Exclusive Time of Functions函数独占时间
    [leetcode]257. Binary Tree Paths二叉树路径
  • 原文地址:https://www.cnblogs.com/v812249389/p/4463347.html
Copyright © 2020-2023  润新知