类型的对象,表现出的不同形态(对象的多种形态)
多态的表现形式:父类类型 对象名称=子类对象;
多态的前提:1.有继承/实现关系
2.有父类引用指向子类对象 Fu f=new Zi;
3.有方法重写
多态的好处:1.使用父类型作为参数,可以接收所有子类对象
2.体现多态的扩展性与便利
多态调用成员的特点:变量调用:编译看左边,运行也看左边
方法调用:编译看左边,运行看右边
内存图解
如果父类中没有对应的成员变量或成员方法,在调用时就会报错集合和数组的对比
1.长度:数组长度确定,集合长度可变
2.存储类型:数组可以存基本数据类型可以存引用数据类型
集合可以存引用数据类型,可以存基本数据类型(但是需要包装类)
创建ArrayList对象:
ArrayList<E> list=new ArrayList<E>();
E代表泛型(限定集合中存储数据的类型)
new ArrayList<E>()中的E在jdk7之后就可以省略;
ArrayList集合对象创建后Java底层会进行处理
ArrayList成员方法(增,删,查,改)
增:boolean result=list.add("aaa");(一定可以添加成功,返回为true)
删:boolean result=list.remove("aaa");
删除失败时:
根据索引删除(会返回被删除的元素):
修改元素(返回被修改的元素):
查询元素:
获取集合的长度:
list.size();
添加基本数据类型需要用对应的包装类(重点记忆char和int):
jdk5之后int和Interger可以相互转化;
添加自己书写的类定义的对象在遍历对象内容时需要用相应的get方法
如果把创建对象写在循环的外面,最后遍历的全部是最后一次键盘录入的东西,因为把对象定义在循环外面,只创建了一次,只有一个地址值,第一次键盘录入后再进行键盘录入,就会把先前键盘录入的东西覆盖了,但是最后遍历的是一个地址值,内容完全一样;当把创建对象写在循环内时,循环一次就创建一次对象
创建对象在循环外:
创建对象在循环内:
如果要调用两个方法,且需要返回值,可以在一个方法中调用另一个方法以简化代码
例:
如果我们要返回多个数据就,可以把这些数据先放到一个容器中去,再把容器返回(容器可以是集合或数组)