黑马程序员——C#对面向对象编程的理解
2012-03-01 16:59
225 查看
---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------
相信很多人在学习面向对象编程(OOP)时都是晕晕乎乎的,似懂非懂的感觉。看着书又能理解,闭上书后貌似又写不出来。面向对象编程到底是什么?为了巩固这些知识强化其印象,把它梳理一遍。首先得理解类和对象的概念,这往往是一个令面向对象的初学者感到迷惑的问题。
什么是类:
类是一个抽象的概念,现实中的时间或空间里它是不存在的,类是对一类“事物”的属性与行为的抽象。就好像人(Person)这个类,它虽然可以包含很多个体(“张三”、“李四”、“王五”“……”),但它本身不存在于现实世界上,它只是这些个体抽象的总称。
类的定义:
public class Person
{
private string name; //属性:姓名
private char sex; //属性:性别
private int age; //属性:年龄
public Person() {}
public Person(string name, char sex, int age)
{
this.name = name;
this.sex= sex;
this.age= age;
}
}
public void SayHello()
{
Console.WriteLine("我叫{0},性别{1},年龄{2}",name,sex,age);
}
什么是对象:
对象是类的具体的个体,它是一个实实在在存在的东西,比如,张三是类Person的一个对象,李四也是类Person的一个对象。
实例化对象:
Person zhangsan = new Person("张三", ‘男',18);// 张三这个对象
zhangsan. SayHello();// 张三的行为
Person lishi = new Person("李四", '女',20);// 李四这个对象
zhangsan. SayHello();// 李四的行为
……
可以有很多个对象;
面向对象三大特性:封装,继承,多态
1、封装(Encapsulation) :
所谓封装又称信息隐藏,就是将某些东西包装和隐藏起来,让外界无法直接使用,只能通过某些特定的方式才能访问。
万物皆对象,任何对象都具有特性和行为。我们将其特性称为成员变量,将其行为称之为成员函数,被封装的特性只能通过特定的行为去访问。
如:
private string _name;
public string Name
{
get(return _name;)
set{_name = value;}
}
或者
public string Name{get;set;}
访问修饰符:
public 公共的,可任意访问
private 私有的,可被本类访问
protected保护,可被本类和子类访问
internal 内部,可被本程序集内的所有类访问
2、继承(Inheritance)
继承是指它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。通俗的说后代具有祖先的某些特点就叫继承,当然后代还可以具有自己独有的特征。
通过继承创建的新类称为“子类”或“派生类”。
被继承的类称为“基类”或“父类”。
public class A
{
//A类所有的属性
public string Name{get;set;}
public int Age{get;set;}
public int Weight{get;set;}
public int Height{get;set;}
}
public class B:A //B类继承A类
{
public B(string name,int age,int weight,int height,char sex)
{
//继承A类的所有属性
this.Name=name;
this.Age=age;
this.Weight=weight;
this.Height=height;
//捅有自己特定的属性
this.Sex=sex;
}
public char Sex{get;set;}
}
3、多态(Polymorphic):
指两个或多个属于不同类的对象,对于同一消息(方法调用)所做出不同响应的方式。
多态的实现:
实现方法的重写,父类中定义的方法(如SayHello())用virtual关键字修饰定义为虚方法。
在字类中定义子类自己的方法(如SayHello()),用override关键字修饰实现对父类中SayHello()方法的重写。
定义父类变量,用子类对象初始化父类变量 如:A a=new B(" ", ……);
---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------
详细请查看:http://net.itheima.com/
相信很多人在学习面向对象编程(OOP)时都是晕晕乎乎的,似懂非懂的感觉。看着书又能理解,闭上书后貌似又写不出来。面向对象编程到底是什么?为了巩固这些知识强化其印象,把它梳理一遍。首先得理解类和对象的概念,这往往是一个令面向对象的初学者感到迷惑的问题。
什么是类:
类是一个抽象的概念,现实中的时间或空间里它是不存在的,类是对一类“事物”的属性与行为的抽象。就好像人(Person)这个类,它虽然可以包含很多个体(“张三”、“李四”、“王五”“……”),但它本身不存在于现实世界上,它只是这些个体抽象的总称。
类的定义:
public class Person
{
private string name; //属性:姓名
private char sex; //属性:性别
private int age; //属性:年龄
public Person() {}
public Person(string name, char sex, int age)
{
this.name = name;
this.sex= sex;
this.age= age;
}
}
public void SayHello()
{
Console.WriteLine("我叫{0},性别{1},年龄{2}",name,sex,age);
}
什么是对象:
对象是类的具体的个体,它是一个实实在在存在的东西,比如,张三是类Person的一个对象,李四也是类Person的一个对象。
实例化对象:
Person zhangsan = new Person("张三", ‘男',18);// 张三这个对象
zhangsan. SayHello();// 张三的行为
Person lishi = new Person("李四", '女',20);// 李四这个对象
zhangsan. SayHello();// 李四的行为
……
可以有很多个对象;
面向对象三大特性:封装,继承,多态
1、封装(Encapsulation) :
所谓封装又称信息隐藏,就是将某些东西包装和隐藏起来,让外界无法直接使用,只能通过某些特定的方式才能访问。
万物皆对象,任何对象都具有特性和行为。我们将其特性称为成员变量,将其行为称之为成员函数,被封装的特性只能通过特定的行为去访问。
如:
private string _name;
public string Name
{
get(return _name;)
set{_name = value;}
}
或者
public string Name{get;set;}
访问修饰符:
public 公共的,可任意访问
private 私有的,可被本类访问
protected保护,可被本类和子类访问
internal 内部,可被本程序集内的所有类访问
2、继承(Inheritance)
继承是指它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。通俗的说后代具有祖先的某些特点就叫继承,当然后代还可以具有自己独有的特征。
通过继承创建的新类称为“子类”或“派生类”。
被继承的类称为“基类”或“父类”。
public class A
{
//A类所有的属性
public string Name{get;set;}
public int Age{get;set;}
public int Weight{get;set;}
public int Height{get;set;}
}
public class B:A //B类继承A类
{
public B(string name,int age,int weight,int height,char sex)
{
//继承A类的所有属性
this.Name=name;
this.Age=age;
this.Weight=weight;
this.Height=height;
//捅有自己特定的属性
this.Sex=sex;
}
public char Sex{get;set;}
}
3、多态(Polymorphic):
指两个或多个属于不同类的对象,对于同一消息(方法调用)所做出不同响应的方式。
多态的实现:
实现方法的重写,父类中定义的方法(如SayHello())用virtual关键字修饰定义为虚方法。
在字类中定义子类自己的方法(如SayHello()),用override关键字修饰实现对父类中SayHello()方法的重写。
定义父类变量,用子类对象初始化父类变量 如:A a=new B(" ", ……);
---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------
详细请查看:http://net.itheima.com/
相关文章推荐
- 集体智慧编程第六章对面向对象的深入理解
- 黑马程序员学习(三) 我对面向对象的一点理解
- C#编程:对象序列化为字节数组以及字节数组反序列化为对象
- [转]对.Net 垃圾回收的C#编程相关方面(Finalize 和Dispose(bool disposing)和 Dispose())的一些理解体会
- 对面向对象和面向过程的一些新理解
- 再探java基础——对面向对象的理解(2)
- C#编程利器之五:集合对象(Collections)
- 黑马程序员——对于对象的理解
- 我对面向对象设计的理解——Java接口和Java抽象类 转
- C#中List或其它集合对象排序方法的一点理解
- 【黑马程序员】C#面向对象中一些知识点总结和备忘
- 黑马程序员之C#编程基础学习笔记:从一个整数数组中取出最大的整数。
- 如何更准确的理解面向编程中的对象
- 黑马程序员_C#面向对象学习知识总结2
- UDP编程 UDP连接对象的理解和使用
- 黑马程序员-面向对象的理解以及Objective-C方法和对象分配内存的学习笔记
- 深入理解C#:编程技巧总结(一)
- [转载] C#异步编程模型1--使用 IAsyncResult 对象的异步设计模式
- 希望这篇文章对理解C#的对象模型有所帮助 【zz】
- 一道理解c#中对象(引用类型)相互赋值和方法覆盖(overriding)的题目