• 面向对象----类1


    一、为什么需要面向对象? 生活中所有的东西都是一个个的对象,为了描述他们方便,我们就把它们使用面向对象的方式来解决。

    二、什么是面向对象编程?

    根据具本的实际生活(业务),设计相对应的类或对象出来,按照生活中的流程或逻辑来操作程序中的类或对象,这样更直观,更方便。

    三、面向对象的三大特性:封装、继承、多态。

    **********************************************************

    一、类的基本概念

    (一)类的基本了解。

    类:自己定义的一种复杂的类型。

    类一般包括两大部分:字段-成员变量(名词或形容词),方法-成员函数(动词) 类的关键词:class

    (二).类的定义:

    class 类名 {  成员变量的定义;  ...  成员函数的定义;  ... }

    在类的成员(成员变量,成员函数)前面经常会加访问修饰符(public private protected) public - 公有的。

    例如:。。。public string a; private - 私有的。例如:。。。private string b;

    (三).类的使用:

    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()会显示成李家的狗?

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;

    namespace ConsoleApplication1 {     class Dog     {         public string _Name;         public string _Ovner;         public void run()         {             Console.WriteLine(_Ovner+"家里的"+_Name+"在跑跑!");         }     }     class Program     {         static void Main(string[] args)         {             Dog d = new Dog();//实例化             d._Name = "旺财";             d._Ovner = "张三";             d.run();             Dog e = d;             e._Ovner = "李四";             e.run();             d.run();             Console.ReadLine();         }     } }

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

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

    二、类的成员——属性

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

    (一)属性的定义:

    public 类型 属性名

    {  

    get   { }    //只有get,没有set,只读,不可写

    set  { 关键词value.代表是要赋的值。 }  //只有set,没有get,只写入,不读 

     }

    (二)属性的使用:

    直接通过属性名进行使用。

    Console.WriteLine(r.Height); - 调用属性的get部门;属性名不在“=”的左侧,或没有“=”,调用get只读

    r.Height = 180; -调用属性的set部分。属性名在“=”的左侧,调用set写入

    三、类的方法——成员函数——方法重载 方法的名子相同,参数不同(类型不同,个数不同)——形成了方法的重载。

    重载方法与返回类型无关。

    好处:

    1.减少方法名的定义,不用记太多的方法名了。

    2.减少代码重复,更大限度的重用,代码结构更合理。

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

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;

    namespace ConsoleApplication2

    {    

    class Ren    

    {         public string _Name;        

    private int _Height;

            public int Height     //属性的定义  

    {             get { return _Height; }            

                 set             {                 if (value > 0 && value < 300)                 _Height = value;                 else Console.WriteLine("输入错误!");             }   

     }       

      private int _Weight;

            public int Weight//属性的定义      

      {             get { return _Weight; }             set { _Weight = value; }         }

                   public void JieShao()         {             Console.WriteLine("我叫:"+_Name+",身高:"+_Height+"cm,体重:"+_Weight+"kg.");         }       

                      public void JieShao(DateTime time)         {             Console.Write(time+":");             JieShao();            

    //方法的重用,调用重载函数,减少函数名的多次设置,方便记忆;而且可以实现代码的重用,更方便           

    // Console.WriteLine(time.ToString()+"我叫:" + _Name + ",身高:" + _Height + "cm,体重:" + _Weight + "kg.");         }    

    }    

    class Program    

    {     

        static void Main(string[] args)         {             Ren r = new Ren();             r._Name = "张三";             r.Height = 190;             r.Weight = 90;             r.JieShao();             r.JieShao(DateTime.Now);             Console.ReadLine();         }    

    }

    }

  • 相关阅读:
    .net core 使用Https总结
    移动宽带丢失gzip
    .net core 3.0 3.1 在docker 下报SSL Handshake failed with OpenSSL error
    使用sequelize-auto 生成mysql 表的实体时主键没有 autoIncrement: true 属性
    asp.net core 控制静态文件的授权
    我用asp.net core 部署到docker遇到的问题
    docker 命令 记录
    docker 容器连接 host的sql server失败
    asp.net core spa应用(angular) 部署同一网站下
    Java使用算数运算符实现两个整数互换
  • 原文地址:https://www.cnblogs.com/xianshui/p/4463048.html
Copyright © 2020-2023  润新知