面试题-基础篇
一、方法的重写(override)与重载(overload)区别
重载 | 重写 |
---|---|
同一个类中,方法名相同,参数列表不同的方法互为重载的方法 | 子类继承父类以后,对父类中同名同参的方法进行覆盖操作叫做方法的重写 |
子类重写的方法的权限修饰符不得小于父类的 | |
子类重写的方法抛出的异常类型不得大于父类的 | |
子类重写的方法的返回值必须是父类的返回值类型或者父类的子类的返回值类型 | |
不能重写父类声明为 private 的方法 |
二、== 和 equals 的区别
== | equals |
---|---|
适用于基本数据类型:比较变量的值是否相等 | 只适用于引用数据类型:未重写的情况下等 == 作用一样 |
适用于引用数据类型:比较两个引用的地址是否相等 | 开发中一般重写 equal 方法,用于比较两个对象的实体内容是否相等 |
三、你是怎样理解面向对象的
概念 | 面向对象就是利用编程语言对现实事物进行抽象,面向对象具有以下四大特征 |
---|---|
封装 | 封装的好处就是安全,方便。比如将属性私有化并提供get/set方法,这样外界只能通过get/set方法来操作属性,行为变得可控。比如单例模式,私有化构造器,提供获取实例的方法 |
继承 | 继承的好处就是提高代码的复用和扩展。继承可以保留父类的属性和方法,同时子类又可以扩展自己的属性和方法 |
多态 | 多态性可以理解为一个事物的多种形态,也就是对象的多样性,多态的好处是提高了代码的通用性和灵活性,父类的引用指向子类的对象 |
抽象 | 抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面 |
四、接口和抽象类的区别
抽象类 | 接口 |
---|---|
抽象类可以定义构造函数 | 接口不可以定义构造函数 |
类是单继承 | 接口是多实现 | </