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的分享