Java面向对象与c语言面向过程的不同
-
面向过程和面向对象的区别:
面向对象和面向过程,其实就是关注一件事情的角度不同,比如说:你想看AV(AmericanVideo)
面向过程是:
面向对象是:
从上面两张图不难看出,面向过程是一个自给自足的过程,它需要考虑第一步干什么,第二步干什么。。。
而面向对象是直接无视过程,不关注他是怎么实现的,或者说是利用一个包装好的过程来实现自己想要达到的目的。。比如说:我要看AV,我不管你在哪下载谁给你种子,还是用暴影还是Q影还是射手还是快播来搞给我看,我不管,我就是要看AV。
Java面向对象的三个基本特征是类,
-
对象和类
这也是面向对象语言比面向过程语言高级的地方,面向对象编程会比面向过程接近人类社会的思维方式,使程序员编程更加快捷和方便。
如:Aoisora、Yui Hatano是对象,而他们都是日本人,日本人就是一个类。
从上例不难看出,对象就是具体到某一事物上,而类就是对象的类别(也就是所谓的抽象),当然,对象也可以归属到不同的类。
而每个事物都有自己的属性和行为,如:小何身高一米八五,具有打篮球、踢足球、编程的能力。
身高就是小何的属性,从编程的角度来说可以用变量来描述。
打篮球,踢足球,编程的能力就是小何的行为,从编程的角度来说可以用方法来描述。
-
继承
现实世界中事物的属性和行为可以进行传递,当某一个事物得到了另一个失误传给它的属性和行为时,我们就说该事物实现了继承。
如:小何的孩子小小何会继承父亲某些属性和行为,小小何身高也是一米八五,同样能打球,踢球,编程,还能把高数刷到100分!
小小何继承了小何的某些属性和行为时,我们就说该事物实现了继承。
继承不同于复制,上例中可看出,小小何还有高数刷分的技能,这就是他比他父亲高超的地方。
被继承的对象是父类,继承父类的对象叫子类。
通过继承来重用已有代码,同时增加新的代码来拓展功能,达到不浪费代码的目的。
-
多态
多态是指同一个名字的若干个方法(方法体中的代码不一样,但是实现的功能类似,所以他们是同一个名字)。我们用一个方法名调用方法时,执行的是这些不同版本中的一种。
多态分为重载和覆盖
-
重载
一个类中,有若干方法名字想同,但参数不同,成为方法(functions)的重载。在调用时根据参数的不同来决定执行哪个方法。
重载的关键是参数必须不同(参数的类型或个数必须不同)
如:有个计算加法的方法,该方法既可以计算2个整数相加,也能计算2个浮点数相加,也能实现3个整数的相加,相比c语言,重载用起来方便得多。
publicint a2b(int a,int b)
publicfloat a2b(float a,float b)
publicint a2b(int a,int b,int c)
-
覆盖
声明:覆盖是发生在子类中的。也就是说必须有继承才会有覆盖的发生。
覆盖的定义:如果子类和父类有同名的方法(且参数相同),子类中的方法将覆盖父类的方法。
也就是说你对一个父类的功能不爽,然后对该父类再写一遍写代码写到你爽到嗨来产生一个子类,下次你调用这个方法的时候就会用子类的方法来覆盖父类的方法。
-
接口
Java中的类只能有一个父类(只能进行单重继承,c++可以多重),这样的程序结构简单,层次清楚,但是实际应用中往往需要多重继承,因此Java提供接口来实现多重继承。
接口是一种特殊的类,它只能由常量和抽象方法组成,而不包含变量和方法的实现。
一个接口可以被一个或者多个类实现,当一个类实现了一个接口,它必须实现接口中所有的方法,这些方法必须被声明为public。