1.面向对象与面向过程有什么区别?
1)出发点不同。面向对象强调对象概念,将问题映射到对象上;面向对象过程强调过程的 抽象化与模块化。
2)层次逻辑不同。面向对象以对象的类作为处理问题的基本单位;面向过程是模块化的,讲究模块与模块之间的关系。
3)数据处理方式与控制程序方式不同。面向对象方法将数据与代码封装起来,原则上不能改动,相当于一种黑盒;面向过程则直接通过程序处理数据,各种模块之间相牵制,相互制约。j
4)分析设计与编码转换方式不同。面向对象是一种平滑的软件设计,贯穿于整件的生命周期分析设计与编码,实现一种无缝连接;面向过程是一种有缝的链接。
2.面向对象的主要特征
1)抽象 包括过程抽象和数据抽象。
2)继承 新类继承了原始类的特性。
3)封装 将客观事物抽象成类,每个类对自己的方法和数据进行保护。
4)多态 指不同类的对象对同一消息做出响应。
3.继承有什么特征?
1)java没有c++的多重继承,子类只能有一个父类,但是可以通过实现多个接口来达到多重继承的目的
2)子类只能继承public与protected的成员变量与方法
3)子类有与父类同名的成员变量(或函数)时,子类成员变量会覆盖父类成员变量(或函数)
4.重载(overload)与覆盖(override)区别
1)覆盖是子类和父类之间的关系,是垂直关系;重载是同一个类中方法之间的关系,是水平的。
2)覆盖只能由一个方法或只能由一对方法产生关系;重载是多个方法之间的关系。
3)覆盖要求参数列表相同;重载是多个方法之间的关系
4)覆盖关系中,调用方法是根据对象数据类型决定;重载根据调用时的实参与形参表来选择方法体的5
c
5.抽象类与接口
抽象类:如果一个类中包含抽象方法,那么这个类就是抽象类。
接口:一个方法的集合,其中方法都没有方法体。
相同点:1)都不能被实例化
2)只有在实现了接口或者抽象类的方法后才能被实例化。
不同点:1)接口只有定义,其方法不能在接口中实现,抽象类的方法可以在抽象类中被实现。
2)接口需要implement,抽象类需要extends
3)接口便于维护,抽象类不利于维护。
6.内部类有哪些?
内部类分为四种:
非静态内部类
静态内部类
匿名类
本地类