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代码混杂,这让初学者进入的时候会有门槛。
|