Java相关
1.Java的特性(封装、继承、多态)
封装
1. 封装就是把一个类的内部信息隐藏在类的内部,使得外部程序无法直接访问,需要通过该类的方法实现对隐藏信息的操作和访问。
2. 封装是怎么实现的呢?
a. 需要修改属性的访问控制符(修改为private);
b. 创建getter/setter方法(用于属性的读写);
c. 在getter/setter方法中加入属性控制语句(用于判断属性值的合法性);
继承
继承是类与类之间的关系,一个类可以继承另一个类。在Java中继承只能是单继承,也就是说一个类只能有一个父类。列如,狮子属于动物,可以看做是狮子继承于动物,动物是父类(基类),狮子是子类(派生类)。子类继承父类的相关属性,方法,同时子类也可以有自己的属性和方法。父类的私有属性子类无法继承。
多态
多态指的是对象的多种形态。多态有两种,分别是引用多态和方法多态。继承是多态的前提。
多态的三个条件:1.要有重写 2.要有继承 3.父类的引用指向子类的对象
多态的好处:
1.可替换性(substitutability):多态对已存在的代码具有可替换性。
2.可扩充性(extensibility):多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。
3.接口性(interface-ability)。多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。
4.灵活性(flexibility)。它在应用中体现了灵活多样的操作,提高了使用效率。
5.简化性(simplicity)。多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。
Java中多态的实现方式:接口实现,继承父类进行方法重写,同一个类中进行方法重载。
1. 引用多态
父类的引用可以指向本类的对象;父类的引用可以指向子类的对象。
2. 方法多态
创建父类对象时,调用的方法是父类的方法;
创建子类的对象时,调用的是方法是子类重 写的方法或者继承自父类的方法。
2. Java String
String 字符串常量,字符串长度不可变。Java中String是immutable(不可变)的。
StringBuffer:字符串变量(Synchronized,即线程安全)。如果要频繁对字符串内容进行修改,出于效率考虑最好使
用StringBuffer,如果想转成String类型,可以调用StringBuffer的toString()方法。
Java.lang.StringBuffer线程安全的可变字符序列。在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用
可以改变该序列的长度和内容。可将字符串缓冲区安全地用于多个线程。
StringBuffer 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地
将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。append 方法始终将这些字符添加
到缓冲区的末端;而 insert 方法则在指定的点添加字符。例如,如果 z 引用一个当前内容是“start”的字符串缓冲区对
象,则此方法调用 z.append("le") 会使字符串缓冲区包含“startle”,而 z.insert(4, "le") 将更改字符串缓冲区,使之包
含“starlet”。
StringBuilder:字符串变量(非线程安全)。在内部,StringBuilder对象被当作是一个包含字符序列的变长数组。
java.lang.StringBuilder是一个可变的字符序列,是JDK5.0新增的。此类提供一个与 StringBuffer 兼容的 API,但不保证
同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。