面向对象----类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();         }    

}

}

原文地址:https://www.cnblogs.com/xianshui/p/4463048.html