zoukankan      html  css  js  c++  java
  • 数往知来C#面向对象准备〈二〉

    面向对象(OOP→Object-Oriented Programming)

    1.什么是面向对象?

    一种分析问题的方式。
    2.面向对象三大特征: 

    封装(隐蔽代码实现/复用/修改方便)、继承、多态。
    3.什么是类?什么是对象?类和对象的区别?如何写一个汽车类?

    类是模具,创建对象的模具,抽象的。
    类是一种数据类型,用户自定义的数据类型      

    类组成:字段、属性、方法、构造函数等
    对象是具体的,是类的具体实例。

    对象具有属性(特征)和方法(行为)
    案例:创建学生类,老师类,通过构造函数初始化类内部字段
    4.this  当前对象
    5.类与对象的关系:类是用来描述事物的    

    对象是这类事物存在的个体   

    描述对象就是描述对象的特征(字段)与行为(方法)
    例如:
    杨老师和刘波学员都有姓名、性别、年龄等
    杨老师有讲课的行为,学生有学习的行为

    6.类和对象的区别:

    类是抽象的概念,仅仅是模板,比如说:“人”类       

    对象是一个你能够看得到、摸得着的具体实体

    "人"类都有:姓名性别年龄 属性,有说话的方法.
    张三是一个对象,他的姓名属性的值:张三  性别的属性的值:男  年龄属性的值:20   张三会说话


    对象可以叫做类的实例(Instance)
    类只占一块内存,每个对象单独的占用一块内存。

    7.类的定义:

    定的定义语法:
    [访问修饰符] class 类名
    {
    成员;
    ......
    }
    类中可以包含变量的定义、方法。

    8.类的实例化:

    类的实例化,用关键字new
    语法: 类   实例名 = new 类();
    类的成员的访问:
        实例名.属性    实例名.方法名();
    字段、方法、属性(后面讲)都可以叫做类的成员Member,它们都需要定义访问级别。访问级别的用处在于控制成员在哪些地方可以被访问,这样达到面向对象中“封装”的目的。
    访问修饰符:public private (internal protected)

    9.属性

    字段用public修饰的问题.
    属性的定义.get;set;
    属性是为了保护与之相对应的字段的.保证对字段的读取和赋值符合要求.
    属性可分为:读写、只读、只写
    允许外部访问的变量一定要声明为属性
    属性的本质-就是两个方法。

    10.类的构造方法

    构造方法初始化对象的字段属性。
    构造函数是用来创建对象的特殊方法,方法名和类名一样,没有返回值,连void都不用。
    构造函数可以有参数,new 对象的时候传递函数参数即可
    如果不指定构造函数,则类有一个默认的无参构造函数。如果指定了构造函数,则不再有默认的无参构造函数,如果需要无参构造函数,则需要自己来写。
    构造函数可以重载,也就是有多个参数不同的构造函数。
    认识类图

    11.c#中的类图和通用类图

    QQ截图20150828114305

    12.封装:

    提问:大家觉得什么是封装?
    遥控器刚出来时候很神奇,点个按钮就能换电视台、切音量、关电视。而我们使用遥控器的人不需要知道他是怎么实现的(你只需要付钱就可以)
    和遥控器类似,面向对象的封装就是把事物的状态和行为封装在类中,使用类的人不需要知道类内部是怎么实现的,只要调用其中的属性和方法实现功能就行。就像你使用遥控,不需要知道他是怎么控制电视的,只要知道按钮能换台就行
    类和对象本身就是封装的体现。
    属性封装了字段、方法和字段封装成了一个对象、将一堆业务单一的代码封装到了一个方法中、将一个功能封装到了几个类中、将一些具有相同功能的代码封装到了一个程序集中(dll、exe),并且对外提供统一的访问接口。(属性名、方法名等。)

    13.This关键字

    this:
    1.作为当前类的对象,可以调用类中的成员。this.成员(调用成员,自己)
    2.调用本类的其他构造函数。:this()(调用构造函数,自己)

    14.命名空间-虚拟的文件夹系统

    namespace(命名空间),用于解决类重名问题,可以看做“类的文件夹”。
    如果代码和被使用的类在一个namespace则不需要using。
    在不同命名空间下的类调用有两种方法:
    写全称  命名空间.类名
    先using引用命名空间,再调用

    注意:

    1.方法的参数列表里 声明的形参变量在调用的时候才开辟空间存储在栈里

    2.当变量是一个类的成员变量的时候,那么该变量是跟随类的对象存在于堆内存,但是对象引用断开时,等垃圾回收器。

    3.当变量是一个方法的局部变量时,那么该变量是在方法被调用时, 存在于栈内存;方法执行完毕后就立即销毁。

    当你无法控制自己的情绪

    将时间一分一秒地花在随大流、追热点、逞能斗气、不干实事

    人生就会像一架坏掉的机器,创造不出优质的产品

  • 相关阅读:
    Pycharm中导入Python包的方法
    关于SOA架构设计的案例分析
    浅谈12306核心模型设计思路和架构设计
    美图数据统计分析平台架构演进
    有赞搜索系统的架构演进
    美团云的网络架构演进之路
    数据蜂巢架构演进之路
    1号店电商峰值与流式计算
    京东B2B业务架构演变
    饿了么:业务井喷时订单系统架构的演进
  • 原文地址:https://www.cnblogs.com/hetong/p/4771130.html
Copyright © 2011-2022 走看看