Java经典面试题
1、面向对象的特征有哪些方面?
抽象:将同类对象的共同特征提取出来构造类。
继承:基于基类创建新类。
封装:将数据隐藏起来,对数据的访问只能通过特定接口。
多态性:不同子类型对象对相同消息作出不同响应。
抽象
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。
由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。
父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法。
在Java中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口。
抽象类的意义可以用三句话来概括:
1.为其他子类提供一个公共的类型
2.封装子类中重复定义的内容
3.定义抽象方法,子类虽然有不同的实现,但是定义时一致的
继承
在java中规定:一个父类可以有多个子类,但是一个子类只能有一个父类。子类可以通过extends关键字来继承父类。做个比较通俗的比喻,就像一个父亲可以有多个亲孩子,但是一个孩子只能有一个亲生父亲。继承以及重写:子类继承父类是对父类属性和方法的全面继承,同时子类在继承了父类的方法后,可对父类的方法进行重写。
封装
封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问
封装的优点
1. 良好的封装能够减少耦合。
2. 类内部的结构可以自由修改。
3. 可以对成员变量进行更精确的控制。
4. 隐藏信息,实现细节。
多态
允许不同类对象对同一消息做出响应,即同一消息可以根据发送对象的不同而采用多种不同的行为方式(发送消息就是函数调用)。主要有以下优点:
1.消除类型之间的耦合关系
2.可替换性:多态对已存在代码具有可替换性
3.可扩充性:增加新的子类不影响已经存在的类结构
4.接口性:多态是超类通过方法签名,向子类提供一个公共接口,由子类来完善或者重写它来实现的。
5.灵活性
6.简化性
实现多态主要有以下三种方式:
- 接口实现
- 继承父类重写方法
- 同一类中进行方法重载