1:有些工具类的方法都是静态的,为了不让你创建对象,可以将构造函数私有化
2:设计模式:强调的是思想,换到其他面向对象的语言中也适应
public classHelloWorld {
public static voidmain(String[] args) {
Single2 s1 =Single2.getInstance();
Single2 s2 =Single2.getInstance();
System.out.println(s1==s2);
}
}
/**
* 单例
* 1:私有化该类构造函数
* 2:通过new在本类中创建一个本类对象
* 3:定义一个共有的方法将本类对象返回
*/
//开发 饿汉式
class Single{
private static Single s = new Single();
private Single(){}
public static SinglegetInstance(){
return s;
}
}
//面试懒汉式 调用的时候才会加载对象
class Single2{
private static Single2 s = null;
private Single2(){}
public static Single2getInstance(){
if(s==null)
s = newSingle2();
return s;
}
}
3:继承:
提高了代码复用性,让类与类之间产生了关系,是多态的前提
Java支持单继承,不支持多继承(因为会产生不确定性,多个父类中有相同成员)
当本类的成员和局部变量同名用this区分
当子父类的成员变量同名用super区分
this代表本类对象的引用,super代表一个父类的空间
子类不能直接访问父类中私有的内容,可以间接访问,通过get
子父类中出现同名函数,运行子类的,覆盖掉了父类的,因为加强了。
覆盖注意事项:子类权限必须大于等于父类
静态只能覆盖静态,或被静态覆盖
覆盖的注意:当子类需要对功能扩展时,需要保留父类又要扩展,就可以用覆盖功能