11.2 父类和子类
- Java就只允许单继承,若要多继承可以用接口来实现
11.3 使用super()关键字
- 如果要设计一个可以继承的类,最好提供一个无参数的构造方法以避免程序设计出错误。
11.6 Object类及其tostring()方法
- Java中的所有类都继承来自java.lang.Object类
- object类中的tostring()方法
```
System.out.println(对象)
```
11.9 对象转换和instanceof运算符
- 向上转型:子类向父类转换(转换一定成功,因为子类一定是父类的实例)
- 向下转型:父类向子类转换(需要显示转换,并且不一定成功)
- 向下转型可以先判断父类是不是子类的实例,用instanceof方法,返回一个Boolean
```
if(Object instanceof 子类){
显示转换。。。。
}
```
11.10 Object类的equals()方法
- 它的签名是:public boolean equals(Object o)
- Object类中equals方法的默认实现是
```
public boolean equals( Object obj ){
return (this==obj);
这个实现用==运算符检测两个引用变量是否指向同一个对象
}
```
- java.lang.String和java.util.Date中重写了equals方法,用于比较两个对象的内容是否一致
11.11 ArrayList类
- java提供arraylist类来存储不限定个数的对象
- arraylist类也可以用来存储字符串(字符串也属于对象)
- arraylist类是一个泛型类,具有一个泛型类对象
```
+ArrayList() 创建一个空的列表
+add(o:E) :void 增加一个o元素到末尾
+add(index :int ,o:E) :void 增加一个o元素到指定下标处
+clear() :void 清除所有元素
+contain(o:object):boolean 如果该列表包含元素o,则返回true
+get(index:int) :E 返回该列表下标位置的元素
+indexOf(o:object):int 返回列表中第一个与之匹配的元素的下标
+isEmpty():boolean
+lastIndexOf(o:object):int 返回列表中最后一个元素的下标
+remove(o:object):boolean 去除表中的第一个元素
+size():int
+remove(index:int):E 去除指定下标的元素
+set(index:int,o:E):E 设置指定下标的元素
```
- 可以使用java.util.Arrays.sort(array);对数组进行排序
- 可以使用java.util.Collection.sort(arraylist);对数组进行排序
11.12 对于列表有用的方法
- 从一个数组里创建数组列表:Arrays类的静态方法aslist返回一个列表。
```
String[] array = { "red", "green", "blue" };
ArrayList<String> array1 = new ArrayList<String>(Arrays.asList(array));
```
- 把数组列表来创建一个对象数组。
```
String[] array1 = new string[list.size()];
list.toarray(array1); 将list中的内容复制到array1中
```
- 使用java.util.Collections类中的静态的sort方法对元素进行排序
- 使用java.util.Collections类中的静态的max、min方法来返回列表中的最大和最小元素
- 使用java.util.Collections类中的静态的shuffle方法来随机打乱列表的元素(返回值类为void)
```
Integer[] array = { 3, 5, 95, 4, 15, 34, 3, 6, 5 };
ArrayList<Integer> list = new ArrayList<Integer>(Arrays.asList(array));
java.util.Collections.sort(list);
System.out.println(list);
System.out.println(java.util.Collections.max(list));
System.out.println(java.util.Collections.min(list));
java.util.Collections.shuffle(list);
System.out.println(list);
```
11.15 反正扩展和重写
- final修饰的类表示最终类,不允许被扩展。Math类就是一个最终类,String、StringBuilder、StringBuffer也是最终类。
- final修饰的方法不可以被子类重写