zoukankan      html  css  js  c++  java
  • C#面向对象基础01

    面向对象不是取代面向过程的
    类、对象。"人"是类,"张三"是人这个类的对象。
    类是抽象的,对象是具体的。按钮就是类,某个按钮就是对象。对象可以叫做类的实例。类就像int,对象就像10.字段field(和某个对象相关的变量),字段就是类的状态。人这个 类有姓名、年龄、身高等字段。类不占内存,对象才占内存。
    方法:方法就是累能够执行的动作,比如问好、吃饭等。
    类的继承,类之间可以有继承关系,比如电脑类可以从"
    电器"类继承,这样的好处是"电脑"类只需要定义自己特有的字段、方法就可以,也就是只要定义了内存大小,cpu型号这些字段或者弹出光驱等方法 就可以。父类。基类。电脑类是电器类的子类。重用。
    面向对象的三个特征:封装、继承、多态。
    没有现象对象的世界中的难题。

    成员访问级别
    字段、方法、属性都可以叫做类的成员,他们都需要定义访问级别。访问级别的用处在于控制成员在哪些地方可以被访问,这样达到面向对象中"封装"的目的
    几个访问级别:public(任何地方都可以访问);privae(默认级别。只能由本类中的成员访问)。还有internal/protected两个级别,以后会讲。
    class Person{

    private string Name;

    public void GiveName(string name){
    Name=name;//拒绝不好听的名字
    }

    public void SayHello(){
    Console.WriteLine("你好,我是{0}",Name);
    }

    }

    Person tom=new Pewson();
    tom.GiveName("tom");
    //tom.Name="tom";
    tom.SayHello();

    永远不要把字段public

    属性
    惯用法:属性开头字母大写,字段开头字母小写
    class Person
    {
    private int age;

    public int Age
    {
    get{return age;}
    set{age=value;}
    }

    public void SayHello()
    {
    Console.WriteLine("我的年龄是{0}",Age);
    }
    }
    只用set或者只用get就可以定义只读或者只写属性(只写的不常见)
    可以为set、get设置访问级别
    例子,限制非法值的设置
    字段和属性的区别是什么?属性看似字段、不是字段,可以进行非法值控制,可以设置只读。
    set/get块内部其实就是get_***/set_***方法。

    面向对象04
    面向对象版聊天机器人
    机器人呢有不同的名字、维护自己的FullLevel,可以SayHello(我叫***),可以喂食(Eat(int foodCount)),可以对它说话(Speak),对异常情况(错误的喂饭数字,喂得太多会撑死了)进行处理,有两个机器人供选择,一开始通过1、2数字选择聊天机器人。

    Reflector 反编译器在vs的什么地方,怎么找不到呀?

    面向对象编程基础8 构造函数
    构造函数用来创建对象,并且可以在构造函数中对对象进行初始化
    构造函数式用来创建对象的特殊函数,函数名和类名一样,没有返回值,连void都不用。
    构造函数可以有参数,new对象的时候传递函数参数即可
    构造函数可以重载,也就是有多个参数不同的构造函数。
    如果不指定构造函数,则类有一个默认的无参构造函数。
    如果指定了构造函数,则不在有默认的无参构造函数,如果需要无参构造函数,则需要自己来写。


    面向对象编程基础10 继承

    public class Chinese Person
    {
    public string HuKou{get;set;}
    public void KongFu(){......}
    }
    Chinese p1=new Chinese();
    p1.Name="李雷";
    p1.HuKou="北京朝阳区";
    p1.SayHello();
    p1.KongFu();
    定义类的时候不指定父类,则父类是Object类,Object类是任何类
    的直接或者间接父类。


    异常与异常处理
    传统的错误表示方式:错误码。举例。需要知道不同错误码的含义,如果不处理错误码,则程序可能陷入不可以预知的错误。
    错误码的缺点::不处理则很难发现,每次处理则很麻烦;
    难以看出错误的原因;容易使得程序进入不确定状态。
    try catch.Exception ex异常也是对象。
    Exception 类主要属性:Message/StackTrace
    发生异常后程序默认就退出了,后续代码不会执行。
    catch以后的代码则会继续执行。
    不要吃掉异常
    扔出自己的异常


    常量与静态成员
    Const常量。常量名要大写。一定不会变的声明成常量。
    全局变量。static类变量。
    不用new就能用的方法:static方法,static方法其实就是普通函数。
    在static 方法中可以调用其他static方法、字段、属性。在非static方法中可以调用static的方法、字段。
    静态类,不能被new的类就是静态类。静态类一般用来实现一些
    函数库。***Helper,SqlHelper,PageHelper

    命名空间
    namespace(命名空间),用于解决类重名问题,可以看做"类的文件夹"
    在代码中使用其他类的时候需要using类所在的namespace.
    System.Collections.ArrayList,快速引入的方法,右键--->解析

    为什么使用Convert/Console等类不需要自己写using?
    如果代码和被使用的类在一个namespace则不需要using.
    可以修改默认的namespace,因此不要认为在相同文件夹下就不用using,不在相同文件夹下就需要using.


    索引器
    C#中提供了按照索引器进行访问的方法
    定义索引器的方式:string this[int index]{get{return "";}
    set {}},string为索引器的类型,[]中是参数列表。进行索引器写操作就是调用set代码块,在set内部使用Value得到用户设置的值;进行读操作就执行get代码块。
    索引器参数可以不止一个,类型也不限于int,几乎可以是任意类型

  • 相关阅读:
    @support浏览器兼容判断 以及 @media媒体查询
    关于BFC的总结
    JS—二维数组的创建
    JS—操作符优先级
    JS—事件对象
    JS—事件
    DOM—addEventListener() & removeEventListener()
    高级算法——动态规划(斐波那契函数实例)
    对象字面量的使用
    小程序日历 IOS真机预览问题
  • 原文地址:https://www.cnblogs.com/fanhongshuo/p/3889254.html
Copyright © 2011-2022 走看看