黑马程序员技术交流社区
标题:
OC的面像对象鱼java C++ ,有啥区别呢
[打印本页]
作者:
枫叶路过123
时间:
2014-11-7 00:31
标题:
OC的面像对象鱼java C++ ,有啥区别呢
OC的面像对象鱼java C++ ,有啥区别呢,,,Java与OC那个复杂一些
作者:
yuanlingqi
时间:
2014-11-7 09:13
OC与JAVA面向对象的思想是一致的,OC相对于JAVA语言设计的更简洁、更优雅。
举个例子,一个实体,对于每个JAVABEAN属性JAVA是必写getter,setter,这个很让人烦扰,java代码如下
public class FzgsVo implements Serializable {
/** The Constant serialVersionUID. */
private static final long serialVersionUID = 3739942957289793958L;
/** The fzgs dm. */
private String fzgsDm;
/** The fzgs mc. */
private String fzgsMc;
/** The fzgs jc. */
private String fzgsJc;
// 分子公司签名
/** The fzgs qm. */
private String fzgsQm;
/**
* Gets the fzgs dm of FzgsVo.
*
* @return the fzgs dm
*/
public String getFzgsDm() {
return fzgsDm;
}
/**
* Sets the fzgs dm of FzgsVo.
*
* @param fzgsDm
* the new fzgs dm
*/
public void setFzgsDm(String fzgsDm) {
this.fzgsDm = fzgsDm;
}
/**
* Gets the fzgs mc of FzgsVo.
*
* @return the fzgs mc
*/
public String getFzgsMc() {
return fzgsMc;
}
/**
* Sets the fzgs mc of FzgsVo.
*
* @param fzgsMc
* the new fzgs mc
*/
public void setFzgsMc(String fzgsMc) {
this.fzgsMc = fzgsMc;
}
/**
* Gets the fzgs jc of FzgsVo.
*
* @return the fzgs jc
*/
public String getFzgsJc() {
return fzgsJc;
}
/**
* Sets the fzgs jc of FzgsVo.
*
* @param fzgsJc
* the new fzgs jc
*/
public void setFzgsJc(String fzgsJc) {
this.fzgsJc = fzgsJc;
}
/**
* Gets the fzgs qm of FzgsVo.
*
* @return the fzgs qm
*/
public String getFzgsQm() {
return fzgsQm;
}
/**
* Sets the fzgs qm of FzgsVo.
*
* @param fzgsQm
* the new fzgs qm
*/
public void setFzgsQm(String fzgsQm) {
this.fzgsQm = fzgsQm;
}
}
复制代码
要是有1000个属性,你必须对应写1000个getter和setter,类会撑的很长,虽然getter和setter方法有快捷方法生成。在oc里,这只需要对应写1000个@property就搞定了,oc的编译器会帮你自动生成getter,setter,你根本不必关心。
相对于JAVA,OBJECT C还有其他更强大的语法功能,比如^block,我们可以将方法体实时嵌入代码中执行,
这个实际和lambda表达式比较想象,很多主流语言都支持了,但JAVA在JAVA8中才开始支持,而且设计的有点不伦不类,
很不好用,目前大家都在尽量避免使用它,因为还存在性能问题。而block在oc中是鼓励使用的。
从这两点就能看出oc相对java,设计上是领先的。
但oc也有个缺点就是和C代码混杂,这让初学者进入的时候会有门槛。
作者:
doudou33420
时间:
2014-11-7 09:46
区别多了 强类型语言与弱类型语言
JAVA 对抽象的定义 OC对抽象的定义 很明显就能看出来强弱
JAVA里只要你对抽象方法没有重写 那你这个类还是一个抽象类;
OC不一样, 不管你重写不重写 这个类你都随时调用, 哪怕你声明了 没有实现 他也只有运行时才报错
从这点更可以看出 接口的使用.
不同的地方太多了.
如果你拿C# 和JAVA比 那就比较相似了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2