构造方法
1、方法名必需跟类名保持一致
2、无返回类型
3、通过new来调用
4、无参构造器的问题
a)如果我们没有手动定义构造器,系统会自动为我们添加一个无参构造器
b)如果我们定义了构造器,系统就不会为我们添加无参构造器
3、构造方法的第一句总是super,即直接调用父类的方法
a)有继承关系的构造方法调用的顺序
方法的重载(overload)
两同(同一个类,同一个方法名)三不同(参数列表不同,类型个数顺序返回值不同,构成重载吗?no)
this:普通方法中,调用本方法的对象
构造方法中,正要初始化的对象
还可以用来,调用其它的构造方法
super
static:用它修饰的变量和方法就变成了静态变量和静态方法,从属于类,通过类名即可调用,实际存储于方法区中
package:必须位于非注释性第一句
import:引入外部的类 import static导入类的静态属性
final:修饰变量:常量(命名规范:全部大写,多个单词之间用下划线隔开) 修饰类:不能被重写 修饰类:不能被继承
面向对象的三大特征
封装:通过private、default、protected、public关键字实现属性或方法的封装(搞内聚,低耦合)
继承:通过extends,两个好处:
1、代码重用
2、通过继承实现对现实事件更加准确的建模
3、多态:三个必要条件:继承,方法的重写,父类引用指向子类对象
4、动态绑定,静态绑定:
抽象类
1、包含抽象方法的类一定是抽象类
2、抽象类不能被new
3、抽象类可以包含:普通方法,成员变量,构造方法
接口
1、interface
2、类实现接口:implement 可以实现多个接口
3、接口可以多继承
4、接口定义的一种规范(如果你是....则必须....)
内存机制
1、栈
a)存放局部变量
b)不可以被多个线程共享
c)空间连续,速度快
2、堆
a)存放对象
b)可以被多个线程共享
c)空间不连续,速度慢,很灵活
3、方法区
a)存放类的信息:代码,静态变量,字符常量等
b)可以被多个线程共享
c)空间不连续,速度慢,很灵活
垃圾回收器
1、程序员不能调用垃圾回收器,但可以通过system.gc()提建议回收
2、finallize:一般也不用调