1. 面向对象具有哪些特征?
由于面向对象本身概念太过模糊,所以Java开发者设计了三种面向对象的特征进一步解释了面向对象思想的应用场景,分别为:(这三个概念进一步解释了面向对象思想的应用!)
(1). 封装
(2). 继承
(3). 多态
2. 什么是封装?封装的作用和好处是什么?
封装:密封、包装、包裹!
例子:例如我们在网上购买商品时,商家会把购买后的商品打包密封后进行快递的运输!为什么要对购买的商品密封包装起来?安全!隐私!
Java中通过私有化属性可以防止外界随意访问并操作类中的属性,但是会导致其余所有类都无法访问类中的属性,所以类中对外提供公开的方法,在方法内提供属性的访问!同时可以根据需求自定义条件,让访问的过程更加安全!
封装好处:增强程序的安全性和可控性!
3. 封装的标准化流程是什么?
封装由于增强安全性的同时,也会造成代码量的增加,所以程序员在使用封装的时候往往需要声明大量的代码实现程序的安全和可控,于是乎Java开发者设计了一个封装的模板,允许程序员根据模板自动生成相关代码。然后再生成的代码基础上添加新的代码完成封装内容!
标准化流程如下:
(1). 私有化成员变量
(2). 对外提供公开的set和get方法操作数据!
set方法:有参数,无返回值。方法中利用参数给成员变量赋值,实现属性的赋值操作。
get方法:无参数,有返回值。方法中直接将成员变量返回,实现属性的取值操作。
IDEA中通过右键 --> generate --> getter and setter --> 选中属性 --> ok的方式自动生成set和get方法!
4. 什么是Java的继承?Java继承有什么特点?
Java中继承通过extends单词声明,Java中继承是发生在类和类之间的关系!由子类继承父类,可以获得父类中所有属性和方法的行为称为继承!
Java中继承特点如下:
(1). 单继承:Java中规定一个子类最多只能继承一个父类!
扩展:一个父类可以有多个子类!这个不违反单继承!
(2). 单方向:Java中规定继承只能自下而上继承!不能反复继承
(3). 子类继承父类后,私有属性也会被一并获取!只不过无法直接访问而已!
Java继承好处如下:
(1). 子类继承父类后,可以拥有父类中所有的属性和行为,此外子类中可以额外定义新的属性和行为,相当于父类的升级版!变相扩展了父类的功能!
换言之:子类相当于父类的扩展!
(2). 如果多个子类中出现了重复的代码,可以将多个子类中重复的代码进行提取并定义到父类中,只需通过继承的方式即可获得重复代码!简化开发代码量
5. 什么是this关键字?什么是super关键字?
this关键字:指代当前类对象(指代调用this所在方法的对象,我们可以通过this访问当前类中的属性或者行为!)
扩展:当局部变量和成员变量重名时,通过this可以进行区分!
super关键字:指代当前类父类对象,我们可以通过super关键字访问父类中的属性或者行为!
6. 什么是方法的重写(Override)?
方法的重写表示,当子类继承父类后,可以将父类的方法再子类中重新定义,这种行为就称为方法重写!方法重写要求:方法名相同、参数列表相同、返回值类型相同!
好处:在不修改父类原有代码的基础上,对父类方法的功能进行重写扩展,提高了程序的可维护性!
7. @Override是什么?
@Override在Java中表示一个注解,叫做重写注解,这个注解的作用就是为了检测所修饰的方法是否是重写方法!
8. 什么是构造方法?构造方法的作用是什么?
和普通方法不同之处在于,
(1).构造方法的方法名必须和类名相同,并且构造方法不能设置返回值类型。Java中构造方法的英文名通过constructor表示,构造方法又名构造器或者构造函数!
(2).普通方法需要通过对象进行调用访问,构造方法是直接在构建对象时通过new关键字进行调用访问!无需程序员手动调用!
9. 构造方法的特点是什么?
(1). 如果类中不声明构造方法,类中默认存在一个无参构造方法!
(2). 只要程序员在类中声明了构造方法,类中默认的无参构造器就会被覆盖!
(3). 类中可以定义多个构造方法,包括有参和无参构造器!通过有参构造器可以接收用户的数据来根据用户的需要给属性赋值!
(4). 构造方法允许被重载!理论上一个类中可以存在无数个构造方法!
10. 构造方法在继承中的应用?super()的含义是什么?
Java中规定,构建子类对象之前必须先初始化父类的属性!这个操作靠super()实现!
super():指代父类无参构造方法!(在构建类对象之前初始化父类属性!)
规则:每一个子类的构造方法第一行永远隐藏super()单词。表示访问父类的无参构造器初始化父类的属性!
super()可以手动声明,但是也必须放在第一行!我们也可以通过在super()内部传递数据调用父类的有参构造器!