一.static关键字
1.什么是static关键字
static代表静态的, 可以修饰类的成员, 都和类加载有关.
* 2.静态变量
类加载后初始化
可以通过"类名.变量名"访问
被该类所有实例共享
当定义一个变量希望被共享, 或者类加载后就能使用时, 就定义为静态的.
* 3.静态方法
类加载后可以调用
可以通过"类名.方法名"访问
不能使用外部非静态成员
当定义一个方法时, 这个方法不访问外部任何非静态成员, 就可以定义为静态的, 这样做不用再创建对象就能使用.
4.静态代码块
类加载后就执行
不能使用外部非静态成员
当有一些代码希望在类加载之后就执行, 且只执行一次的时候, 就可以定义为静态代码块.
二.垃圾回收
1.finalize
在一个类中写了finalize方法之后, 对象销毁时会执行这个方法中的代码
2.gc
System.gc()可以通知虚拟机销毁内存中的垃圾对象
三.单态设计模式
1.什么是单态设计模式
当定义一个类, 而希望这个类只能创建一个对象时, 可以使用单态设计模式
2.单态设计模式的写法
私有化构造函数
类内部创建对象, 用成员变量引用, 私有化防止类外修改
提供一个公有的静态的方法, 让类外可以获取到该对象
四.继承
1.什么是继承
一个类可以使用extends继承另一个类, 子类继承父类之后得到父类的所有成员. 提高代码复用性.
2.继承的特点
Java只支持单继承, 不支持多继承, 但是可以多重继承.
*** 3.类型转换
子类对象可以当作父类对象使用, 因为父类有的子类都有.
一个父类引用可以指向一个子类对象, 但是这时不能调用子类特有的方法.
子类当父类用时, 如果要调用子类特有的方法, 可以使用强制类型转换将父类变量强转回子类.
强制类型转换时, 不论类型是否匹配, 编译都不会报错, 运行时类型不匹配会抛出异常ClassCastException
在强制类型转换之前, 通常都使用instanceof进行类型判断.
*** 4.重写方法
子类覆盖父类的方法时, 返回值类型, 方法名, 参数列表必须全部相同.
不能定义更低的访问权限.
可以使用"super.方法名"访问父类的方法.
在调用一个对象的方法时, 该对象是哪个类的对象就先找哪个类, 如果这个类中有指定方法就执行, 没有就找父类.
在重写方法时, 可以使用@Override来检查当前方法是否成功覆盖父类方法, 如果没有覆盖, 编译会报错.
*** 5.子类对象的创建
创建子类对象的时候, 会先创建一个父类对象.
在执行子类构造函数的时候, 会先执行父类构造函数.
通过super()可以调用父类构造函数, 如果不指定, 那么就调用无参的.
super()和this()相同, 都只能是构造函数的第一个语句. 二者不能同时出现在一个构造函数中.