面向对象和面向过程:
相比面向过程,面向面向对象更符合人的思维,更符合现实。如果我想写一个计算器,使用java的话我首先会想到创建一个计算器类,在里面定义一些成员变量和方法然后实例化出计算器对象,调用这个对象中的方法。但是如果使用c语言的话,我会先想到写个函数获取用户输入,写个函数分析出运算符,写个函数计算出来。
所以面向过程更强调功能,以过程为中心,分析出问题所需要的步骤,再用函数将这些步骤一个一个实现,最后一个一个调用。
而面向对象更抽象,以对象为基础,有着封装、继承、多态这三大特性。
三大特性:
封装:就是使用private使属性和方法对外隐藏,外部不能直接通过对象.属性来任意改变对象中的属性,必须调用对象.setXXX来改变,这是为了在setXXX方法里面可以保护属性不被任意改变。方法也可以使用private限制,因为有一些 类内部使用的方法 不需要公开给外部。
继承:子类可以继承父类的属性和方法,这样子类就具有了父类的属性和方法。另外,实现接口也是一种继承,接口定义了类必须要实现的方法。
多态:多态就是多种形态,方法或对象具有多种形态。方法的多态表示在重写和重载上,重写是运行时多态,子类重写父类方法,重载是编译时多态,方法名一样但是方法签名不一样(比如参数类型、数量不一样);对象的多态就像List list = new ArrayList(),父类引用指向子类对象,编译时是父类类型,运行时时子类类型。