今天学习了关于equals、static、单例模式的设计、abstract、接口的知识,加深了对它们的了解。
1、equals
equals(Object o)是object类的方法,所有的一般的类都是Object的子类,所以也继承了equals这个类,而在一般的类中,调用这个的方法的某个类的对象
得到的也是这个对象的this值与传进来的参数是否相等的boolean值 return (this == obj);
而在String、File等一些特殊的类中重写了关于equals的方法,所以功能就不一样了,在以后的开发中主要是通过改写这个方法,以达到想要的功能。
2、static
这个关键字的应用很多,主要有以下。
①、共享属性、方法。
因为只要是static类型的属性或者方法,系统都会在为其分配一个内存区域。
已知一个类,创建了多个实例,而多个实例之间也是有共享的属性,如果没有定义static,每次创建实例的话,都会再重新创建一次,显得很麻烦,因此这时候
static就起到关键的作用。只需要在定义类时,里面定义该属性对应的static类型。只要创建实例后,该实例就可以调用它。
②、static代码块的使用:
static{
里面的方法或属性一次在内存中进行初始化。
}
③、
3、单例模式的设计(static的重要应用)
首先什么是单例模式,就是采用一定的方法保证在整个的软件系统中对某个类只能存在一个对象实例。
因此考虑:
①、由于只能存在一个类的对象实例,所以需要将这个类的构造方法封装起来。在之前的了解中,对于信息的封装用的关键字是
private。因此就有
private Single(){
}
但是外部又需要这个类的实例对象,private的出现导致无法在外部创建实例,因此就需要在该类的内部创建实例。
static Single single=new Single()
加一个static主要是因为方便外部类,直接用类名调用,不然的话,就需要创建实例才可调用,于理不合。
对于一个单例模式创建的实例,需要保证它不会轻易的被外部类改变,因此需要加一个private修饰符。
private static Single single=new Single()
但是要想外部创建的该类的变量能够调用这个实例对象,则需要添加一个方法,用来返回该实例对像。