论java中面向对象与php区别
来源:互联网 发布:mac 网桥 编辑:程序博客网 时间:2024/05/28 19:24
我学了好几年的php,最近几年移动互联网大爆发,正转型做安卓开发。众所周知,Android是以Java为基准编程的,当然也可以用其他语言比如c++。
没有两种语言面向对象是完全一样的,但是大体思维,中心思想都是一样的。
由于各自语言的特性,细节区别非常多,不可胜诉。总体上,php在设计对象模型式参考了java的设计,但改成适应php自身的形式。php没有java的自动化class loader,在类的读取和对象创建上就要注意先后。php的自动读取要手动设置。php由于自身是动态类型语言,变量本身的类型动态,就没有java的重载功能。这也导致类设计上的一些很大区别。php的动态特性和具有自我反射能力,可以把方法名称当成“消息”发送,在运行时判断对象是否能接收消息,java的静态就不能直接应用这样的设计。php的对象可以动态地后添加属性增减数据,java是禁止这样做的。php的方法名称还不区分大小写。php的动态特性也就不需要模板泛型编程的特性。在java中泛型也占很重要的一部分。 总体上从大的方面来说,我认为主要有几点是不同的。
一:没有重载(overload) <<php web 开发 第三版>>中说的重载其实应该是 覆盖 比较准确(overwrite),看过think in java,think in c++就知道了他们的意义了。overwrite是子类和父类之间的,如果父类有一个函数叫Dis, 子类也定义一个Dis,那么 这个函数就被子类 overwrite了,叫覆盖,覆写都可以;而重载是只同一个类中有同名的函数,但是参数列表不同。比如java可以
class test { void f1(){} void f1(string s){} }而php中却不可以如下这样,这样会报错说 重复定义 了。class test { function f1(){} function f1($string){} }二:单继承
子类只能继承一个父类,不能继承多个父类。三:没有向上传型(upcasting) 简单的说就是,假如有一个父类 animal(动物),他的子类是person(人,人也是动物),那么在java中我们可以这样写代码。类的定义我就不写了,直接写实例化类。
animal a = new person(); //实例化一个动物 a ,用的是人来构造的,可以,因为人也是动物但是php却不可以有这样的写法,我们只能要实例化谁就是谁. $a = new animal(); 或者 $a = new person();
总之,这些不同都是由语言特性和适用场合决定的。以上观点仅代表个人观点,与其他个人和机构无关。
0 0
- 论java中面向对象与php区别
- php中类与面向对象
- PHP与Java面向对象不完全比较
- PHP面向对象中this,self,parent的区别与联系
- PHP中面向对象
- php面向对象编程:抽象类与接口的区别
- php与C++面向对象上的区别
- Java中二维数组与面向对象
- Java中面向对象与内存解析
- php面向对象中抽象类与接口的使用:
- Java 与面向对象
- 面向对象语言(如Java)中:基本类型与对象在存储和参数传递上的区别
- PHP面向对象与面向过程实例
- java中面向对象
- php中面向对象示例
- lua面向对象编程中冒号与点号的区别
- 面向对象设计中抽象类与接口的区别
- 面向对象编程(OOP)中组合与继承的区别
- 【Boost】boost库asio详解4——deadline_timer使用说明
- xcode APP 打包以及提交apple审核详细流程(新版本更新提交审核)
- oracle 备份还原
- [POJ] 2379 -> ACM Rank Table
- java反射机制
- 论java中面向对象与php区别
- 1010. 一元多项式求导
- 最牛脚本开发
- 算法和数据结构就是编程的一个重要部分,你若失掉了算法和数据结构,你就把一切都失掉了
- 聚合关系与组合关系
- 地址转换函数inet_aton、 inet_ntoa、 inet_addr和inet_pton 、inet_ntop
- 再析spring注解事务之事务传播
- ORACLE中RECORD、VARRAY、TABLE的使用详解
- Sorting an array by category names