面向对象-下-内部类~单例模式-2021-03-13

三、内部类
1.概念:一个类的内部定义的类,通常用于专门服务于这个外部类
2.分类:
1.静态内部类:有static修饰
class Outer{
static class Inner{
}
}
//使用
Outer.Inner inner = new Outter.Inner();

不能直接访问外部类的非静态成员
2.非静态内部类:没有static修饰
class Outter{
class Inner{
//可以访问外部类的所有的成员,包括私有的
//不能定义静态成员
//但是可以定义静态常量
}
}
//使用
Outer.Inner inner = new Outer().new Inner();
3.使用内部类:定义在方法中或其他局部区域内
class Outer{
public void test(){
int a = 10;//局部变量,如果被内部类访问,默认带修饰符final
class Inner{
public void show(){
//a++;//不可以修改,因为final修饰
}
}
new Inner().show();
}
}

4.匿名内部类:没有名字的局部内部类
当一个类只使用一次时,可以使用匿名内部类,通常是使用接口的实现类时。
1.格式:
new 类或接口(){子类或实现类的成员,一般是重写的方法
interface danceable{
void dance();
}
public class Demo{
main(){
new Danceable(){
public void dance(){
sout(""跳舞);
}
}.dance();//匿名内部类对象调用重写的方法
}
}

5.关键字static
静态的,随着类的加载而加载,先于实例初始化
1.修饰成员变量,所有的对象共享的一份数据,通常使用类名直接调用
2.修饰方法,通常使用类名调用,一般用于工具类中
3.修饰代码块,静态代码块,用于初始化类的静态成员变量
4.修饰内部类,静态内部类
5.配合关键字import关键字,静态导入。被导入的类,可以直接使用其方法

四、单例模式
1.设计模式,前人在开发某些特定需求时,总结的一套设计经验。比如单例模式
如何使得内存中有且仅有一个当前类的实例(对象)。
2.饿汉式:类记在的时候,就创建好对象
public class Singleton{
private static final Singleton instance = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return instance;
}
}
3.懒汉式:使用时,再创建对象
public class Singleton{
private static Singleton instance = null;
private Singleton(){}
public static Singleton getInstance(){
if(instance == null)
instace = new SIngleton();
return instance;
}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值