提示:以下是本篇文章正文内容,下面案例可供参考
所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例。
class Bank{
//1.私有化类的构造器
private Bank(){
}
//2.内部创建类的对象
//4.要求此对象也必须声明为静态的
private static Bank instance = new Bank();
//3.提供公共的静态的方法,返回类的对象
public static Bank getInstance(){
return instance;
}
}
class Order{
//1.私有化类的构造器
private Order(){
}
//2.声明当前类对象,没有初始化
//4.此对象也必须声明为static的
private static Order instance = null;
//3.声明public 、static 的返回当前类对象的方法
public static Order getInstance(){
if(instance == null){
instance = new Order();
}
return instance;
}
}
饿汉式:
坏处:对象加载时间过长。
好处:饿汉式是线程安全的。
懒汉式
好处:延迟对象的创建
坏处:线程不安全。
1.main()方法作为程序的入口
2.main()方法也是一个普通的静态方法
3.main()方法可以作为我们与控制台交互的方式。(之前: 使用Scanner)
1.代码块的作用:用来初始化类、对象
2.代码块如果有修饰的话,只能使用static.
3.静态代码块 vS非静态代码块
内部可以有输出语句
随着类的加载而执行,而且只执行一次
作用:初始化类的信息
如果一个类中定义了多个静态代码块,则按照声明的先后顺序执行
静态代码块的执行要优先于非静态代码块的执行
静态代码块内只能调用静态的属性、静态的方法,不能调用非静态的结构
内部可以有输出语句
随着对象的创建而执行
每创建一个对象,就执行一次非静态代码块
作用,可以在创建对象时,对对象的属性等进行初始化
如果一个类中定义了多个非静态代码块,则按照声明的先后顺序执行
非静态代码块内可以调用静态的属性、静态的方法,或非静态的属性、非静态的方法
1.fina1可以用来修饰的结构:类、方法、变量
2. final 用来修饰一个类:此类不能被其他类所继承。
比如: String类、System类、StringBuffer类
3. final 用来修饰方法,表明此方法不可以被重写
比如: Object类中getClass();
4…final 用来修饰变量:此时的“变量"就称为是一个常量
4.1 final修饰属性:可以考虑赋值的位置有:显式初始化、代码块中初始化、构造器中初始化
4.2 final修饰局部变量
尤其是使用final修饰形参时,表明此形参是一个常量。当我们调用此方法时,给常量形参赋一个实参。一旦调用以后,就只能在方法体内使用此形参,但不能进行重新赋值。
1.若子类重写了父类方法,就意味着子类里定义的方法彻底覆盖了父类里的同名方法系统将不可能把父类里的方法转移到子类中,编译看左边,运行看右边
2.对于实例变量(属性)则不存在这样的现象,即使子类里定义了与父类完全相同的实例变量,这个实例变量依然不可能覆盖父类中定义的实例变量,编译运行都看左边
public class CircleTest{
public static void main(String[] arr]{
Sysout("c1的id:" + c1.getId());
Sysout("c2的id:" + c2.getId());
Sysout("创建的圆的个数为:"+Circle.getTotal());
}
}
class Circle{
private double radius;
private int id;
public Circle(){
id = init ++;
total++;
}
private static int total ; //记录创建的圆的个数
private static int init = 1001; //static声明的属性被所有对象所共享
public int getId(){
return this.id;
}
public int getTotal(){
return this.total;
}
}