面向对象基础
来源:互联网 发布:娃娃软件家长版 编辑:程序博客网 时间: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。
- 面向对象(面向基础)
- 面向对象技术基础
- 面向对象的基础
- 面向对象基础
- 第一章 面向对象基础
- VC#面向对象基础
- 面向对象基础
- 面向对象基础
- c#面向对象基础
- java基础 面向对象
- 面向对象基础术语
- 面向对象基础
- JavaScript面向对象基础
- 面向对象基础
- javascript 面向对象基础
- 面向对象基础
- 面向对象基础
- 面向对象基础
- JavaME概述
- 如何实现文件下载
- Visual C++获取当前路径
- 图片文件上传代码
- 随便来来
- 面向对象基础
- js2之Ext.js
- url大全
- 鸡尾酒
- Hibernate框架
- linux/UNIX系统检测入侵
- Java行业的圣经 -- 四本最重要的个人藏书,他们的书名都不含Java
- web 测试经验(转贴)
- emv 4.2 规范整理