ArrayList
所属软件包: java.util
作用
数组长度不可变, 数组如果要扩容, 需要用到数组的复制
为了解决数组长度不可变的问题, 可以实现数组长度动态变化
支持类型
引用类型
基本数据类型都有对应的引用类型
int 为 Integer
char 为 Character
(其他基本数据类型都为首字母大写)
例如:
byte 为 Byte
boolean 为 Boolean
构造方法
空参构造器: 没有内容的空的集合
ArrayList < E > arrList = new ArrayList < E >()
< E >: 泛型, 可以所有的引用类型, 规定集合中元素类型的
常用API
void add(E e) 增加一个元素
E(集合的类型) remove(int index): 移除掉index位置的元素, 并返回被移除掉的元素
E get(int index) 获得index位置的元素
E set(int index,“String”) 修改index位置的元素,并返回被修改的元素
int size() 计算集合长度
泛型:< E >
规定集合中元素的类型
父类和子类
extends(继承)
子类 extends(继承) 父类
1.概念:子类/衍生类/扩展类: Dog
父类/基类: Animal
2.子类继承父类, 就继承了父类所有的成员变量和方法
3.所有的类, 都有唯一的父类,
如果没有写父类, 说明父类就是 Object
4.子类中还可以定义自己的独特的成员变量和方法
子类的功能一定比父类要强大
特殊情况
子类中的成员变量和父类的成员变量同名时
就会无法定义父类中的成员变量。
建议:父子类中的成员变量不要同名
子类中可以引用父类对象
super 与this类似。
创建子类对象之前, 会先创建父类对象
加载子类之前, 会先加载父类
构造方法: 父类的构造方法不能被子类继承
创建子类对象, 会先默认调用父类的无参构造器
原因: 子类构造方法中, 第一行默认 super();
可以手动调用父类其他构造方法
所以子类构造方法中, 一定会先调用父类的构造方法
父类中, 建议先写无参构造器
通过子类对象调用方法时
先看子类中有没有定义这个方法, 定义了, 调用子类方法
子类中没有这个方法, 调用父类继承的方法
方法的重写\覆盖
子类中定义的方法, 方法返回值类型\方法名\参数列表
都和父类中定义的方法完全一致
abstract 抽象的
抽象方法: 方法没有方法体
一个类中, 存在抽象方法, 那么这个类就必须也是abstract
抽象类: 用abstract修饰的类
抽象类不能直接new对象
有构造方法, 为了给子类使用
抽象类的非抽象子类, 必须实现/重写抽象类的所有抽象方法
判断:
1有抽象方法的类叫抽象类 是对的
2抽象类就是有抽象方法的类 是错的
3抽象类中可以没有抽象方法 是对的