首页 > 其他 > 详细

黑马程序员_面向对象的三个基本特征

时间:2014-03-19 17:05:53      阅读:541      评论:0      收藏:0      [点我收藏+]

面向对象的理解

面向对象和面向过程都是一种编程思想,面向对象是相对于面向过程而言的,面向过程是面向对象的基础。

面向过程:完成任务由具备相应功能的函数,强调的是行为过程,完成这项任务是怎样做的!

面向对象:完成任务由具备相应功能的实例对象,强调的是具备相应功能的实例对象,完成这项任务的结果是什么!

面向对象编程的重要的组成要素:类和对象

类:类是用来描述事物的,类是抽象的概念,仅仅是模板,类不占内存

对象:对象是这类事物存在的个体,描述对象就是描述对象的行为和特征,对象占内存。

属性的作用:属性是为了保护与之相对应的字段的,保证对字段的读取和赋值符合要求,允许外部访问的变量一般要声明为属性,属性的本质是方法。

————————————————————————————以下概念为转载,代码为基础加强中的实例。————————————————————————————

1.封装

  封装是面向对象的特征之一,是对象和类概念的主要特性。封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。一旦定义了一个对象的特性,则有必要决定这些特性的可见性,即哪些特性对外部世界是可见的,哪些特性用于表示内部状态。在这个阶段定义对象的接口。通常,应禁止直接访问一个对象的实际表示,而应通过操作接口访问对象,这称为信息隐藏。事实上,信息隐藏是用户对封装性的认识,封装则为信息隐藏提供支持。封装保证了模块具有较好的独立性,使得程序维护修改较为容易。对应用程序的修改仅限于类的内部,因而可以将应用程序修改带来的影响减少到最低限度。

2.继承

  继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。这也体现了大自然中一般与特殊的关系。继承性很好的解决了软件的可重用性问题。比如说,所有的Windows应用程序都有一个窗口,它们可以看作都是从一个窗口类派生出来的。但是有的应用程序用于文字处理,有的应用程序用于绘图,这是由于派生出了不同的子类,各个子类添加了不同的特性。
bubuko.com,布布扣
  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Text;
  5 
  6 namespace ConsoleApplication3
  7 {
  8     #region 人类,父类。
  9     class Person
 10     {
 11         private string name;
 12 
 13         protected string Name
 14         {
 15             get { return name; }
 16             set { name = value; }
 17         }
 18 
 19         private char sex;
 20 
 21         protected char Sex
 22         {
 23             get { return sex; }
 24             set { sex = value; }
 25         }
 26 
 27         private int age;
 28 
 29         protected int Age
 30         {
 31             get { return age; }
 32             set { age = value; }
 33         }
 34 
 35         public Person(string name, char sex, int age)
 36         {
 37             this.Name = name;
 38             this.Sex = sex;
 39             this.Age = age;
 40         }
 41     } 
 42     #endregion
 43 
 44     #region 老师类,继承(派生)于人类,子类。
 45     class Teacher : Person
 46     {
 47         private int year;
 48 
 49         public int Year
 50         {
 51             get { return year; }
 52             set { year = value; }
 53         }
 54 
 55         private int salary;
 56 
 57         public int Salary
 58         {
 59             get { return salary; }
 60             set { salary = value; }
 61         }
 62 
 63         public Teacher(string name, char sex, int age, int year, int salary)
 64             : base(name, sex, age)
 65         {
 66             this.Year = year;
 67             this.Salary = salary;
 68         }
 69 
 70         public void SayHello()
 71         {
 72             Console.WriteLine("我是{0},当了{1}年老师,我的月薪是{2}。", Name, Year, Salary);
 73         }
 74     } 
 75     #endregion
 76 
 77     #region 学生类,继承(派生)于人类,子类。
 78     class Student : Person
 79     {
 80         private string hobby;
 81 
 82         protected string Hobby
 83         {
 84             get { return hobby; }
 85             set { hobby = value; }
 86         }
 87 
 88         private int classID;
 89 
 90         protected int ClassID
 91         {
 92             get { return classID; }
 93             set { classID = value; }
 94         }
 95 
 96         public Student(string name, char sex, int age, string hobby, int classID)
 97             : base(name, sex, age)
 98         {
 99             this.Hobby = hobby;
100             this.ClassID = classID;
101         }
102 
103         public void SayHello()
104         {
105             Console.WriteLine("我是{0},我是{1}孩,今年{2}岁,爱好是{3},在{4}班。", Name, Sex, Age, Hobby, ClassID);
106         }
107     } 
108     #endregion
109 
110     class Program
111     {
112         static void Main(string[] args)
113         {
114             Student s = new Student("张三", , 18, "踢足球", 3);
115             s.SayHello();
116             Teacher t = new Teacher("王老师", , 30, 5, 8000);
117             t.SayHello();
118             Console.ReadKey(true);
119         }
120     }
121 }
继承演示实例

 

3.多态

  多态性是指允许不同类的对象对同一消息作出响应。比如同样的加法,把两个时间加在一起和把两个整数加在一起肯定完全不同。又比如,同样的选择编辑-粘贴操作,在字处理程序和绘图程序中有不同的效果。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。

黑马程序员_面向对象的三个基本特征,布布扣,bubuko.com

黑马程序员_面向对象的三个基本特征

原文:http://www.cnblogs.com/dlwcg/p/3611451.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!