面向对象的优势和特点

1.首先我们来了解什么是面向对象?

解释:
面向对象是一种编程思想,一种解决问题的方式,不是专门的编程方式。

另外面向对象也遵循万物皆可对象的法则,程序中的关键模块都可以视为对象,对象都是由属性和方法组成,属性可以理解为对象的特征,是静态的,方法可以理解为对象的行为,是动态的。

最后在js中,所有的对象可以分为普通对象和函数对象。而Object ,Function 是JS自带的函数对象。凡是通过 new Function() 创建的对象都是函数对象,其他的都是普通对象。

2.面向对象的优势和特点

2.1封装:忽略细节,选择执行,重复使用

封装的含义:把重复的代码封装起来,只留下若干个接口,便于使用维护。
封装的作用:重复使用,选择执行,使得对内部部件有一个完整性的包括。

下面举个例子

public class Husband {

     //对属性的封装一个人的姓名、性别、年龄、妻子都是这个人的私有属性

    private String name;
    private String sex;
    private int age;
    private Wife wife;

     //set()、get()方法是该对象对外开发的接口

    public String getName() {  return name;  }
    public void setName(String name) {  this.name = name; }

    public String getSex() {  return sex; }
    public void setSex(String sex) { this.sex = sex; }

    public int getAge() { return age; }
    public void setAge(int age) { this.age = age; }

    public void setWife(Wife wife) { this.wife = wife; }

}

这样我们就做到了选择性使用,以husband做了一个公共库,供自己调用,节省了代码,提高了效率。

2.2继承:方便扩展,子拿父

继承的作用:节省代码,提高使用效率

下面举个例子

public class OldPhone {
    public void call(){
        System.out.println("打电话");
    }
    public void sendMessage(){
        System.out.println("发短信");
    }
    public void show(){
        System.out.println("显示来电号码");
    }
}

public class Ipone extends OldPhone{
    public void show(){
        super.show();
        System.out.println("显示头像");
        System.out.println("显示姓名");
    }
}

2.3多态:多种形态,可以实现动态的扩展

多态的含义:简单的说,就是用父类的引用指向子类的对象。多态可以理解成“一个接口,多种实现”,就是同一种事物表现出的多种形态,多态允许将子类的对象当作父类的对象使用,某父类型的引用指向其子类型的对象,调用的方法是该子类型的方法。

多态的作用:把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。

下面举个例子

function(){
      var makeSound=function(animal){
          animal.sound();//不用再去判断类型了
      }
      //声明鸭子对象及方法(行为)
      var Duck=function(){};
      Duck.prototype.sound=function(){
          console.log('嘎嘎嘎');
      }
      //声明鸡的对象和方法(行为)
      var Chicken=function(){

      }
      Chicken.prototype.sound=function(){
          console.log('咯咯咯');
      }
      //分别调用让他们叫出来
      makeSound(new Duck());
      makeSound(new Chicken());
      //就算将来再多一只动物出来,这里也能够无限处理
      var Dog=function(){};
      Dog.prototype.sound=function(){
          console.log('我是旺财');
      }
      makeSound(new Dog());
  })()

上面就做到了 做什么和谁去做以及怎么做的分离,呈现出一个接口,多个端口的使用。

以上就是我对于面向对象优势和特点的理解,如有疏漏之处,欢迎交流。

                                    -------来自NZ的分享
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值