1.抽象:
抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。
2.继承:
继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。
3.封装:
封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。
4. 多态性:
多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。
### 常见Java面试笔试题知识点解析
#### 1. 抽象
**知识点解析:**
抽象在面向对象编程中扮演着至关重要的角色。它指的是在设计类时,只关注那些与当前任务相关的属性和行为,而忽略不相关的部分。这种做法有助于减少不必要的复杂性,使代码更加简洁高效。
**应用场景:**
- **过程抽象**:通常涉及方法的声明,这些方法定义了某些操作应该执行什么功能,但具体实现则留给具体的子类去完成。
- **数据抽象**:通过隐藏类内部的数据结构细节,只暴露必要的接口来与外部交互,从而提高数据的安全性。
**示例:**
假设有一个`Animal`抽象类,其中定义了一个`sound()`抽象方法。具体的子类如`Dog`和`Cat`分别实现了这个方法,这样每个子类可以根据自己的特性发出不同的声音。
#### 2. 继承
**知识点解析:**
继承是面向对象编程中的另一个核心概念,它允许创建一个新类来继承现有类的属性和方法,这极大地提高了代码的复用性和维护性。
**应用场景:**
- **类的层次结构**:通过继承可以构建出具有层级关系的类结构。
- **代码复用**:子类可以直接使用父类的方法和属性,无需重复编写相同的代码。
- **扩展性**:子类可以在继承的基础上添加新的方法或覆盖父类的方法,以满足特定的需求。
**示例:**
考虑一个`Vehicle`类,它定义了一些通用的行为,如`move()`。接着创建`Car`和`Bike`两个子类,它们继承自`Vehicle`并可以添加或覆盖一些特定的方法。
#### 3. 封装
**知识点解析:**
封装是将对象的状态(数据成员)和行为(成员方法)组合在一起的过程。通过对外部提供有限的接口访问内部状态,可以有效地控制对数据的访问,增强安全性。
**应用场景:**
- **数据安全**:通过私有化数据成员,确保只有经过验证的方法才能访问和修改这些数据。
- **接口定义**:为类定义清晰的公共接口,使得其他对象能够以一致的方式与之交互。
**示例:**
比如有一个`BankAccount`类,其中包含了账户余额等敏感信息,这些信息只允许通过提供的`deposit()`和`withdraw()`等方法进行修改。
#### 4. 多态性
**知识点解析:**
多态性是指同一个接口可以由不同的类实现,或者一个类可以有不同的表现形式。这是面向对象编程中非常重要的一个特性,它可以大大提高程序的灵活性和可扩展性。
**应用场景:**
- **参数化多态**:通过泛型实现的多态,可以用于处理多种类型的对象,如`List<T>`。
- **包含多态**:通过方法的重写实现的不同类之间的多态,例如,一个接口`Shape`有多个实现类如`Circle`、`Square`,每个实现类都实现了`area()`方法。
**示例:**
定义一个`Shape`接口,其中包含一个`area()`方法。然后创建`Circle`和`Rectangle`两个实现类,各自实现`area()`方法。这样,通过传递不同的形状对象给同一个方法,就可以根据实际类型调用相应的方法。
#### 其他知识点
- **字符串与字符串缓冲区**:`String`是不可变的,而`StringBuffer`支持动态修改,适用于频繁修改字符串场景。
- **原生类型与包装类型**:Java提供了多种包装类型,如`Integer`包装`int`,这些包装类型支持更多的操作,如自动装箱/拆箱。
- **集合框架**:`ArrayList`和`LinkedList`各有优缺点,前者适合随机访问,后者适合插入删除操作;`Vector`线程安全但性能较差。
- **EJB(Enterprise JavaBeans)**:分为`SessionBean`和`EntityBean`两种主要类型,前者用于业务逻辑处理,后者用于持久化数据。
- **异常处理**:Java中异常分为运行时异常和检查型异常,前者不需要显式处理,后者必须被捕获或声明抛出。
- **HashMap vs Hashtable**:两者都是实现`Map`接口的类,但`Hashtable`是线程安全的,而`HashMap`不是,另外`HashMap`允许键和值为`null`。
以上是对给定文件标题、描述及部分内容中提到的知识点的详细解析,希望能够帮助到正在准备Java面试的朋友。