看了一下java教程,将以前记忆模糊的整理了一下。
1. 继承是多态得以实现的基础,多态就是一种类型表现出多种状态,多态和绑定密切相关,绑定又分为前期绑定和后期绑定,多态就是在后期绑定的基础上实现的。
a) 前期绑定是在程序运行之前绑定,由编译器实现,又叫静态绑定;比如static方法和final方法以及private方法。
b) 后期绑定是在运行时根据对象的类型进行绑定,由方法调用机制实现。
2. 对成员变量private,提供一个或多个public方法实现对该成员变量的访问或者修改就叫做封装。
3. 重载:在同一个类中,方法名相同,参数列表不同(参数的类型、个数、顺序不同)所引起的两个方法的差异叫重载。与访问修饰符、返回值和抛出异常无关。
4. 重写:在存在继承关系的前提下,子类方法的方法名、参数、返回值与父类均相同,访问修饰符不能更严格,抛出的异常不能更广泛。
5. 构造方法一般是public的,但也可以是private的(单例设计模式)。
6. static标示的只能是类的成员变量,不能用在方法中。在静态方法中只能直接调用其他的静态成员。
7. 构造方法
a) 构造方法没有返回值类型,注意和普通方法区别。
b) 构造方法是最先执行的方法,但是晚于静态代码块和非静态代码块。
c) 抽象类和接口没有构造方法,因为不需要产生对象。
8. 抽象方法必须在抽象类里,但是抽象类不一定有抽象方法。没有抽象方法的抽象类也是有实际意义的,使得这个类不能被直接实例化。
9. 接口
a) 接口中定义的属性和方法不能被private和protected所修饰。
b) 如果一个类不想实现接口中的所有的方法,那么这个类应该声明为抽象类。
10. 接口和抽象类的区别:
a) 接口是用来被实现的,而抽象类是用来被继承的。
b) 接口没有方法实现,而抽象类有方法的实现。
c) 抽象类可拥有构造方法,而接口不可以有。
d) 接口中定义的变量只能是public、static、final的。
11. final类型的变量必须要初始化,否则报错;且最好在声明的时候就初始化。同时只能赋值一次,第二次赋值的时候就会报错。
12. 类
a) 对于类的声明,不能即是final的又是abstract的。Final修饰的类是一个终态的类,不可以被继承。
b) 方法的参数以及方法内的局部变量,仅仅能用final修饰,表示这个参数只可以用来为方法的参数赋值,本身不允许被修改。
c) 类变量(基本类型)可以不赋初值就使用,因为JVM会根据属性给其赋初始值。
13. Java类加载顺序
a) 父类静态变量(静态代码块)---> 子类静态变量(静态代码块)--->父类非静态变量(非静态代码块)--->父类构造函数——>子类非静态变量(非静态代码块)--->子类构造函数
b) 调用静态成员时,加载静态成员所在的类以及父类。
c) 第一次new对象时加载,第2次new对象的时候不加载。
d) 加载之类会先加载父类,有static和final修饰的类不会被加载,当做常量使用。