面向对象的陷阱

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/strivenoend/article/details/83448926

instanceof运算符用来判断前面的对象是否是后面的类或其子类,实现类的实例

注意引用变量的编译时类型和运行时类型
构造器?

构造器负责对java对象执行初始化操作,不管是在非静态初始化块中所做的操作,还是在定义实例变量时指定的初始值,最终都会被提取到构造器中被执行

绝大多数时候,程序使用new关键字为一个java对象申请内存空间,都需要构造器为这个对象执行初始化,

但在某些时候,程序创建java对象无需调用构造器,

(1)使用反序列化方式恢复对象-----类实现Serializable接口

(2)使用clone方法赋值java对象-------类实现Cloneable接口,为该类提供clone(){super.clone();}方法来复制自己,属于浅克隆

因此单例类应该加上readResolve()方法,保证通过反序列化时得到的是已有的java实例,这样可保证得到的是单例类

private Object readResolve(){

return instance;

}

方法重写?

private修饰符修饰的方法,只有当前类能够访问,子类无法访问父类中定义的private方法,因此子类也无需重写该方法

猜你喜欢

转载自blog.csdn.net/strivenoend/article/details/83448926