面向对象基础

来源:互联网 发布:娃娃软件家长版 编辑:程序博客网 时间:2024/05/21 17:12

2008年12月30日 星期二 13时37分

1 面向对象基础

其实虽然书可能写了很厚, 其实关键的思想并不是很多, 不需要下那么大决心去想。 理解好面向对象三个大的特点就可以了。
1) 类与实例:
类就是 具有相同属性和对象的抽象的集合。
class Cat{
 public string Shout(){
  return "喵";
 }
}
这个是猫叫,

实例: 就是一个真是的对象,实例化就是创建对象的过程, 使用new关键字来创建。
Cat cat = new Cat();

2) 构造方法
构造方法, 又叫构造函数, 其实就是对类进行初始化, 构造方法与类同名,无返回值, 也不需要void, 在new 的时候调用。
就是说在Cat()时候调用了,
而如果自己不定义的话, 系统默认生成空的构造方法。 这个方法什么都不做, 只是让你顺利实例化而已。
如 给猫起名字

class Cat{
 private string name = "";
 public Cat(String name)
 {
  this.name = name;
 }
 pubcli String Shout(){
  return "我的名字叫"+ name + “喵”;  // name
 }
}

这样的话就可以生成小猫的时候, 起个名字。
private void button1_Click(object sender, EventArgs e){
 Cat cat = new Cat("咪咪");
 MessageBox.Show(cat.Shout());
}

3) 方法重载: 创建同名的多个方法的能力, 必须使用不同的参数类型。
这种方法 可以扩展。

4)如果想猫叫多声, 该怎么办呢?
属性与修饰符
// 仔细考虑这个概念
属性  有两个方法: set get
get 调用时可以得到内部字段的值或引用, set 访问器没有显式设置参数, 调用时可以给内部的字段或引用赋值
和public 有何区别,
这个可以有更多的控制, 比如说其他地方引用可以set get, 如果改动 只需要改变这个属性而不需要改那么多的东西。 // 好像这个java 没有, 其实就是一个一般的field, 但是set get 是有的。

好比给窗子加了纱窗, 只让阳光和空气进入。 多了层控制就多了个保护。
idTF.setToolTipText( "1 - 1500" );  类似的就是这样调用set get 方法来赋值的。

set 没有返回值, get 有返回值。

5) 封装 -- 面向对象三大特性一
每个对象都包含它能进行操作所需要的所有信息,这个特性叫做封装,
刚才的Cat类  就是封装
封装的好处: 良好的封装减少耦合; 类内部的实现可以自由的修改; 类具有清晰的对外接口。

比如 就像房子, 留着门和窗就是public的东西, 其他的摆设可以改变不会影响他人,

6) 继承
是一种is-a 的关系, 如B 继承A, B 是一种A。 猫是一种哺乳动物
a 子类具有父类非private的属性和功能, protected 属性就是专门为这个设计的
b 子类有自己的属性和功能, 即可以扩展父类没有的属性和功能
c 子类可以用自己的方式实现父类的功能。 方法重写。 -- 重要

继承的缺点应该是说 破坏了封装, 是一种类和类强耦合的关系。

7) 多态
这是第三大特性。

好像是说 实例化的时候
动物animal = new 猫();   ?????????

多态是希望消除类型之间的耦合, 多态方法调用允许一种类型表现出与其他相似类型之间的区别,只要它们从一个基类导出的。

对象既可以作为本身的类型来使用, 也可以作为它的基本类型使用。

未完待续。。。

 

没有学过设计模式, 那么对多态,乃至面向对象的理解多半是肤浅和片面的。


note:
1) 关于多态需要继续学习才可以, 看head first。

 

原创粉丝点击