java 内部类 单例_内部类,单例模式

内部类:

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;      }  }  饿汉式在类创建的同时就已经创建好一个静态的对象供系统使用,以后不再改变,所以天生是线程安全的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值