星光

OOP学习笔记

先坑着有空写,今天好忙


先简要的写一点的吧,不然就真坑着了

因为看视频和学习PHP还是没能让我比较清楚的理解OOP(确切说是没能直接理解PHP应用下的OOP)

所以这两天把暑假买的《Java程序设计》翻了出来

Java的系统学习不知道会是什么时候的事情了,可能是在C++之后吧,毕竟为了明年暑假的比赛肯定还是先主攻嵌入式方向,比如现在学的单片机,汇编,以后自己要补充的C++和各种算法。

嘛,谁知道呢,也不是语言学得越多越好,这是题外话了


 

类和对象

定义类

class  类名{

属性;

方法;

}

类的实例化–对象

类名 对象名=new 类名():

对象是类的实例化,类名的括号中也可以填入参数

有构造函数的情况下,填入参数,即可完成对对象的初始化

如果不填入参数,则使用类中默认的属性

类相当于共同点的集合,抽象出共性,这样对不同对象进行初始化后能做到特异性和共性的兼容


类与结构体的对比

类很多方面和结构体很像,以至于我刚学的时候一直在想为什么需要类呢?

后来才发现类方便了太多

结构体说白了是一种数据结构,是一种“大”数组

而类不光光可以包括数据(数据),还可以包括方法(函数)

原来学C的时候因为程序段比较短,我一般很少特意去申明函数,进行书写

然而类则给了我充分的使用函数的理由

比如我要创造两个类,一个是学生,一个是工人

这两个人类中的方法显然很多方面都不同,学生的方法是学习,工人的方法是工作

然后用这两种类去实例化出不同的两类对象进行不同的处理


封装和继承

子类对父类进行继承,可以继承得到父类的属性和方法(private属性除外)

然后子类可以对父类进行方法重写与变量覆盖,当然了,还有补充

所以子类相对父类来说更加复杂,特异性更强

子类和父类是多对一的关系(当然我说的是针对Java的单继承来说的)

所谓封装就是不是所有类中的属性和方法都是public属性,如果使用private属性,则是不可以被其他类(包括子类)引用和修改的,做到信息隐蔽


 

嘛,其实真是挺有意思的,也有很多东西,还是用代码说话吧,这个有得学,不急,反正这段时间课余有空就学一点~~(现在还是太浅显了)

有新的东西,我想我会来更新


有几个地方比较在意,在这里记录下,慢慢去了解

C中的数组必须要是明确定义的,比如a[10],你不能写a[]。

就算你写a[n],而n在定义数组以前已经被赋值为10也不可以;

PHP中完全不一样,自由度超高,数组可以动态生成,动态拉长(简直毁三观)

Java中现在我自己还不太清楚,但是个人感觉貌似是伪动态的

就是数组创建后不可以被改变长度,但是定义数组允许使用变量,然后根据当时变量的值生成数组

要真是这样,我感觉真挺好的,写数据结构题目时很多时候,这种情况我都用伪代码去写了或者特例化一个情况

再有就是类中的各种细节了。。。(这个太多了,还有析构函数等等。。。)


 

经过刷书基本弄懂了。。还有个问题待解决

PHP中$对象名=new 类名(参数);  get到对象后,通过 $对象1=$对象 $对象2=&$对象 $对象3=clone $对象

这三种方法是否都创建了新对象以及内存空间

 


PHP中子类自动继承父类的析构函数,并调用

 


用Java写了个时钟类练手,基于习题要求进行编写

 

如无特殊声明,欢迎转载,但是请注明来自星之所在《OOP学习笔记》

评论

  1. JixunMoe #1

    找一个 OOP 框架随便折腾一个小项目就能理解了(

    回复
    2014-11-13
    • starlight

      嗯,谢谢建议,现在基本理解好些了

      回复
      2014-11-13