内部类:
1.定义:
在一个类中可以定义一个类,这个类就是内部类
2.写法
class Outer{
class Inner{
.........
}
}
3.特点:
①内部类不能和外部类重名
②内部类的对象可以访问本类的属性和方法,也可以访问外部类的属性和方法(包括private声明的)
4.内部类的分类:
①成员内部类
(1)定义:在类的内部,方法的外部所定义的类为成员内部类
(2)特点:不能使用static变量
(3)内部类对象初始化:
Outer.Inner inner=new Outer().new Inner();
②静态内部类
(1)写法:
class Outer{
static class Inner{
....
}
}
(2)特点:可以使用static变量
(3)静态内部类对象初始化:
Outer.Inner inner=new Outer.Inner();
③局部内部类
(1)写法:
class Outer{
void aa(){
class Inner{
....
}
}
}
(2)特点: a.局部内部类不可以使用private protected和public修饰符
b.不能包含静态成员
④.匿名内部类
(1)定义:没有名字的内部类
(2)写法:
new 类名(){
.......
};
(3)特点:
a.可以在该类重写父类方法,包括抽象类、接口中的抽象方法,也可重写普通类的方法
b.它返回的是该类的一个对象
(4)使用:一般是给抽象类、接口进行实例化并调用它们的抽象方法
单例模式创建过程:
①创建一个私有的静态的该类对象
②创建私有化构造器
③创建一个公有的静态的返回该类对象的方法(判断该对象是否已初始化)
Java Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例在。 使用Singleton的好处还在于可以节省内存,因为它限制了实例的个数,有利于Java垃圾回(garbage collection)。
一、懒汉式单例[java] view plaincopyprint?//懒汉式单例类.在第一次调用的时候实例化自己 public class Singleton { private Singleton() {} private static Singleton single=null; //静态工厂方法 public static Singleton getInstance() { if (single == null) { single = new Singleton(); } return single; } } 二、饿汉式单例[java] view plaincopyprint?//饿汉式单例类.在类初始化时,已经自行实例化 public class Singleton1 { private Singleton1() {} private static final Singleton1 single = new Singleton1(); //静态工厂方法 public static Singleton1 getInstance() { return single; } } 饿汉式在类创建的同时就已经创建好一个静态的对象供系统使用,以后不再改变,所以天生是线程安全的。