java基础试题

面向对象和面向过程的区别:
面向过程 :面向过程性能比面向对象高。 因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要的考量因素的时候,比如单片机、嵌入式开发、Linux/Unix 等一般采用面向过程开发。但是,面向过程没有面向对象易维护、易复用、易扩展。
面向对象 :面向对象易维护、易复用、易扩展。 因为面向对象有封装、继承、多态性的特性,所以可以设计出低耦合的系统,使系统更加灵活、更加易于维护。但是,面向对象性能比面向过程低。
Java作为一种编程语言性能不高的原因是否是因为面向过程性能比面向对象高?
这个并不是根本原因,面向过程也需要分配内存,计算内存偏移量,Java 性能差的主要原因并不是因为它是面向对象语言,而是 Java 是半编译语言,最终的执行代码并不是可以直接被 CPU 执行的二进制机械码。
而面向过程语言大多都是直接编译成机械码在电脑上执行,并且其它一些面向过程的脚本语言性能也并不一定比 Java 好

java的四个基本特征(抽象,封装,继承,多态):
一、抽象:现实生活中的事物被抽象成对象,把具有相同属性和行为的对象被抽象成类,再从具有相同属性和行为的类中抽象出父类。用类、方法、成员变量表示。
二、封装:隐藏对象的属性和实现细节,仅仅对外公开接口。
封装具有以下优点:
1.便于使用者正确、方便的使用系统,防止使用者错误修改系统属性;
2.有助于建立各个系统之间的松耦合关系;
3.提高软件的可重用性;
4.降低了大型系统的风险,即便整个系统不成功,个别独立的子系统有可能还有价值。
封装的两大原则:
1.把尽可能多的东西藏起来,对外提供简洁的接口;
2.把所有的属性封装起来。
三、继承:子类和父类之间的继承关系,子类可以获取到父类的属性和方法。
四、多态
3个必要条件:
1.继承
2.重写
3.父类引用指向子类对象
当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。
多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。

重载和重写的区别:
重写 :
1.发生在父类与子类之间
2.方法名,参数列表,返回类型(除过子类中方法的返回类型是父类中返回类型的子类)必须相同
3.访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)
4.重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常
重载 :
1.重载Overload是一个类中多态性的一种表现
2.重载要求同名方法的参数列表不同(参数类型,参数个数甚至是参数顺序)
3.重载的时候,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准
区别:
1、重写实现的是运行时的多态,而重载实现的是编译时的多态。
2、重写的方法参数列表必须相同;而重载的方法参数列表必须不同。
3、重写的方法的返回值类型只能是父类类型或者父类类型的子类,而重载的方法对返回值类型没有要求。

构造器Constructor是否可被override:

构造器(override)不能被继承,因此不能重写overriding,但是可以被重载overloading

你可能感兴趣的:(java基础试题)