集合ArrayList
ArrayList list1 = new ArrayList();
// ArrayList<限制类型> list = new ArrayList<>();
ArrayList<String> list2 = new ArrayList<>();
注意进行.equals()比较时
s = "test"
"test".equals(s) // 而不是s.equals("text")
集合ArrayList
ArrayList list1 = new ArrayList();
// ArrayList<限制类型> list = new ArrayList<>();
ArrayList<String> list2 = new ArrayList<>();
注意进行.equals()比较时
s = "test"
"test".equals(s) // 而不是s.equals("text")
问题分析之————static关键字
就是多次创建对象,导致产生了不同的数组,本来school应该只存在一个,用static关键字解决
- static修饰的特点 (记忆)
- 被类的所有对象共享
是我们判断是否使用静态关键字的条件 - 随着类的加载而加载,优先于对象存在
对象需要类被加载后,才能创建 - 可以通过类名调用
也可以通过对象名调用
- 被类的所有对象共享
- 5.3static关键字注意事项 (理解)
- 静态方法只能访问静态的成员
- 非静态方法可以访问静态的成员,也可以访问非静态的成员
- 静态方法中是没有this关键字
方法重写————static修饰的方法不能被重写(Override)
class Zi extends Fu {
@Override // 注解,可以用来检查当前的方法是否是一个正确的重写方法
public static void show() { // 会报错
System.out.println("Zi...")
}
}
抽象类
把共性的方法抽取到父类之后发现,该方法的时间逻辑无法在父类中给出具体明确,该方法就可以定义为抽象方法
抽象类不能创建对象,抽象类有有构造方法
抽象类的子类:必须重新父类中的所有抽象方法,或者 将自己也变成一个抽象类(意义不大)
抽象类里面的方法可以是普通方法或者抽象方法(甚至可以没有抽象方法)
final关键字
常量命名规范:大写字母,用下划线_分割
final修饰成员变量,要么在初始化时直接给值,要么正在构造方法结束之前完成赋值
改进StudentDao,数组用ArrayList替换
尽量在不修改原有代码下进行优化
数组相关代码需要保留下来
- 步骤:
- 将原本的StudentDao复制一份,重命名为OtherStudentDao
- 在里面创建一个ArrayList集合容器对象
- 关于OtherStudentDao中的方法,其方法声明要和StudentDao中相同
同时,如果其方法的返回值为数组,有两种方式
– 第一种是直接将返回值修改为ArrayList
– 第二种是在该方法中创建一个数组(Student[] students = new Student[stus.size()];
),将ArrayList的数据传入该数组,然后和之前一样返回该数组
– 更推荐使用第二种 - 完善方法(添加、删除、修改、查看)
–数组.length
改为ArrayList.size()
– 删除:数组[index]=null
改为ArrayList.remove(index) - 修改:
数组[index]=newStu改为
ArrayList.set(index, newStu)“` - 最后一步,将StudentService中的StudentDao对象,替换为OtherStudentDao
接口
当一个类中所有方法都是抽象方法时,我们可以将其定义为接口
- 规则的定义
- 程序的扩展性
// interface关键字
public interface i1 {
}
// 接口不能实例化
// 接口和类之间的关系是实现关系
public class s1 implements i1 {
}
多态
public class Test2Polymorpic {
/*多态的成员访问特点:
成员变量: 编译看左边 (父类), 运行看左边 (父类)
成员方法: 编译看左边 (父类), 运行看右边 (子类)
*/
public static void main(String[] args) {
Fu f = new Zi();
System.out.println(f.num);
f.method();
}
}
原创文章,作者:506227337,如若转载,请注明出处:https://blog.ytso.com/275189.html