前情回顾
继承、封装、多态
封装
其实就是把属性或方法加上私有化修饰符来修饰。private来修饰。
继承
关键字:extends。
子类继承父类。
父类中非私有化的属性和方法可以被子类直接调用。
父类作为类型被指定,使用子类new的话,父类相当于模板。
子类重写了父类中的方法,想要调用被重写前的父类的方法需要使用super。
父类中private修饰的属性和方法不被继承。
多态
重写和重载
重写,子类继承父类并且写了跟父类一模一样的方法,这时候子类的这个方法就叫做重写了父类的方法。
重载,同一个类中方法名一样但参数不同就是重载。
本章内容
Java中常说的集合,一般是指常见的三个接口:List、Set、Map
List接口继承于Collection接口,Collection接口继承于 Iterable接口
Set接口继承于Collection接口,Collection接口继承于 Iterable接口
Map接口谁都不继承。
set和map遍历
长相上来说
List后跟了一个泛型、Set后跟了一个泛型、Map后跟了两个泛型。
List和Set是单列键值对,Map是双列键值对
List多是有Array和Linked来实现,Set和Map多是由Hash或Tree来实现。
所以List是天生有序的,而Set与Map是无序的。
Set 中的元素不重复。
Map是双列 key 、value,key跟set的特性类似不能重复。
注:集合中不能有基础类型,所有基础类型都是以包装类展示。
简单使用说明
泛型
占位符:一般是英文的大写字母。
类的后边用<>括着 或 写在方法上
/**
* @author xing
* 2021年9月22日下午5:38:26
* @param <Q>
* 写在类的后边
*/
public class ZHanWei<Q> {
public List<Q> set0(List<Q> list) {
return list;
}
/**
* @time: 2021年9月22日下午5:40:40
* @auth: xing
* @return:List<W>
* @description:写在方法上
*/
public <W> List<W> set2(List<W> list) {
return list;
}
}
Object 和 ?
Object也是一个类型,使用Object就相当于类型被指定为Object。
? 仅仅是相当于指定了一个未知类型可以被转换。
指定类型Object:
public List<Object> set1(){
List list = new ArrayList();
list.add("123");
list.add(new Integer(1));
list.add(new User());
return list;
}
使用报错:
指定类型为 ?:
public List<?> set2(){
List list = new ArrayList();
list.add("123");
list.add(new Integer(1));
list.add(new User());
return list;
}
使用时只需要强制转型: