面向对象编程的概念性问题

1、类和对象

  这两个是完全不同的概念,不能混淆。

  类(Class)是对某种类型的对象定义变量和方法的原型。它表示对现实生活中一类具有共同特征的事物的抽象,是面向对象编程的基础。一个类定义了一组对象。类具有行为(be-havoir),它描述一个对象能够做什么以及做的方法(method),它们是可以对这个对象进行操作的程序和过程。

  对象(object)是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。

  对象是类的实例化,既“类的实例”与“对象”的含义相同。比如人类是一个抽象了的类,那么你、我还有每一个个体的人都是一个对象。

2、属性和字段

  字段 (field)是一个成员,它表示与对象或类关联的变量。

  属性(property)是实体的描述性性质或特征。像前一例中某个人的身高、体重就是属性。

  常见的情况是将字段设置为私有,通过公共属性来访问他们。

3、方法

  方法基本上大家都知道,这里就不说了

  给段代码示例:

public class People
{
public People()
{
//
// TODO: Add constructor logic here
//
}

private double height; //字段
private double weight; //字段
private int age; //字段




public double Height //属性
{
get { return height; }
set { height = value; }
}

public double Weight //属性
{
get { return weight; }
set { weight = value; }
}

public int Age //属性
{
get { return age;}
set { age = value;}
}

protected void AddAge() //方法
{
age++;
}

}

4、静态成员

  静态成员一般包括静态属性、静态字段和静态方法。静态属性和静态字段是独立于任何对象实例的数据,而静态方法可以执行与对象类型相关,与对象实例无关的命令。

  静态成员可以在类的实例中共享,也就是说当某个类的实例修改了该静态成员变量,其修改值为该类的其它所有实例所见。例如变量peopleNumber(默认为0)为类People的静态成员变量,那么在实例people1中peopleNumber++,再通过people2中引用时peopleNumber就等于1了。这种情况是因为静态成员存在于内存,非静态成员需要实例化才会分配内存。这就是静态成员不能访问非静态的成员的原因。

  关于静态成员,百度知道里解释的不错:http://baike.baidu.com/view/536297.htm  

 5、接口(interface)

  接口是一种约束形式,其中只包括成员定义,不包含成员实现的内容。接口的主要目的是为不相关的类提供通用的处理服务,由于C#中只允许树形结构中的单继承,即一个类只能继承一个父类,所以接口是让一个类具有两个以上基类的唯一方式。

  接口我还不是特别理解,先放着,以后再补充。

 

6、继承

  继承是面向对象程序设计的主要特征之一,它可以让您重用代码,可以节省程序设计的时间。继承就是在类之间建立一种相交关系,使得新定义的派生类的实例可以继承已有的基类的特征和能力,而且可以加入新的特性或者是修改已有的特性建立起类的新层次。

  子类拥有父类的所有成员。同时子类也可以重写父类中的方法。

  子类可以访问父类的public成员和protected成员,但是不能访问private成员。

  

原文地址:https://www.cnblogs.com/zhangkai2237/p/2392568.html