标签:
一、为什么需要面向对象? 生活中所有的东西都是一个个的对象,为了描述他们方便,我们就把它们使用面向对象的方式来解决。
二、什么是面向对象编程?
根据具本的实际生活(业务),设计相对应的类或对象出来,按照生活中的流程或逻辑来操作程序中的类或对象,这样更直观,更方便。
三、面向对象的三大特性:封装、继承、多态。
**********************************************************
一、类的基本概念
(一)类的基本了解。
类:自己定义的一种复杂的类型。
类一般包括两大部分:字段-成员变量(名词或形容词),方法-成员函数(动词) 类的关键词: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(); }
}
}
标签:
原文地址:http://www.cnblogs.com/xianshui/p/4463048.html