Java面试题分享-面向对象基础

问:请你介绍下面向对象的特征
答:面向对象有三种特性,封装,继承,多态。封装可以把软件分隔成一个一个的模块,实现高内聚,低耦合。继承是子类共享父类的属性和方法的一种机制,提供软件的可重用性和可扩展性。多态是指不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态。

问:Overload和Override的区别
答:Overload是重载的意思,Override是覆盖的意思,也就是重写,重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同),重写Override表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法,这相当于把父类中定义的那个完全相同的方法给覆盖了,这也是面向对象编程的多态性的一种表现。

问:构造方法是否可被override(重写)
答:构造方法不能被继承,因此不能重写Override但可以被重载Overload

问:this与super有什么区别
答:this是指向当前实例对象,他的一个非常重要的作用就是用来区分对象的成员变量与方法的形参,当一个方法的形参与成员变量的名字相同时就会覆盖成员变量。
super可以用来访问父类的方法或成员变量,当子类的方法或成员变量与父类有相同的名字时也会覆盖父类的方法或成员变量,要想访问父类的方法或成员变量只能通过super关键字来访问。

问:组合与继承有什么区别
答:组合是指在新类里面创建原有类的对象重复利用已有类的功能,继承是面向对象的主要特性之一它允许设计人员根据其他类的实现来定义一个类的实现。
除非两个类之间是is-a的关系否则不要轻易使用继承,因为过多的使用继承会破坏代码的可维护性,如果类之间不是is-a的关系,就可以通过实现组合的方式来实现相应的功能。

问:面向对象和面向过程的区别
答:面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

猜你喜欢

转载自blog.csdn.net/weixin_34406086/article/details/90842409