安卓开发之java基础笔记7内部类与设计模式
来源:互联网 发布:大学生违法犯罪数据 编辑:程序博客网 时间:2024/06/01 23:43
1.非静态内部类
属于外部类的一个成员,如果想要在外部类的外部去创建内部类的对象时使用以下语法:
Outer.Inner inter=new Outer().new Inner();
inter.print();
在内部类中如果访问外部类的同名的属性时可以通过以下语法:
外部类.this.属性
在非静态内部类当中不可以有静态的成员(属性、方法、静态代码块)
2.静态内部类
使用 static 修饰的内部类,也称为类内部类。
该类被static修饰,作为外部类的静态成员,在静态内部类中不能访问外部类的所有非静态成员。
但是可以访问外部类的静态成员。
在外部类的外部如果要创建外部类的静态内部类的对象,语法:
Outer2.Inner inter=new Outer2.Inner();
inter.print1();
3.局部内部类
定义在方法内的类
在局部内部类中如果要访问方法的局部变量时这个变量要被定义成一个常量(使用final修饰)
4.匿名内部类
无类名
当一个类定义出来只在定义时使用一次,我们可以把该类定义成匿名类。
在实现化匿名类对象时可借助于其父类,或父接口的名字。它如果要引用所在方法的局部变量时和局部内部类的规则是一样,被引用的局部变量要被定义成常量。
设计模式
单态(单例)Singleton
模式主要作用是保证在java应用程序中,一个类Class只有一个实例存在。
在某些情况下(如应用程序要访问数据库需要创建数据库的连接)程序运行过程中只需要持有某一个类的唯一的实例,
如果这个实例存在就不允许创建这个类的其他实例,此时我们需要把该类定义成单例。
创建单例的三步:
public class MediaPlayer {
1.私有该类的构造方法
private MediaPlayer(){}
2.在本类中创建私有静态的本类对象
private static MediaPlayer player=new MediaPlayer();
3.提供公有的静态的返回本类对象的一个方法。
public static MediaPlayer getInstance(){
return player;
}
1.饿汉模式
以空间换时间
public class MediaPlayer {
//饿汉模式创建单例
private static MediaPlayer player=new MediaPlayer();
//收回创建实例的权限
private MediaPlayer(){}
//公用静态调用方法
public static MediaPlayer getInstance(){
return player;
}
}
2.懒汉模式
延迟加载,以时间换空间
public class MediaPlayer2 {
//懒汉模式(layz load)延迟加载
private static MediaPlayer2 player=null;
//私有化构造方法
private MediaPlayer2(){}
//公用静态调用方法
public static MediaPlayer2 getInstance(){
if(player==null){
player=new MediaPlayer2();
}
return player;
}
}
简单工厂(Simple Factory)
把对象的创建交给工厂,而不是由用户自己直接生产(直接实例化)。
简单工厂的组成:
1.抽象产品父类
2.具体产品子类
3.工厂类
- 安卓开发之java基础笔记7内部类与设计模式
- 【幻化万千戏红尘】qianfengDay10-java基础学习:成员内部类、静态内部类、局部和匿名内部类,设计模式之简单工厂模式
- Java笔记(3)-设计模式、异常、内部类
- “迭代器”设计模式与内部类
- 安卓开发之java基础篇笔记【1】
- 安卓开发之java基础笔记【2】
- 安卓开发之java基础笔记【3】
- 安卓开发之java基础笔记【4】
- 安卓开发之java基础笔记【5】
- 安卓开发之java基础笔记【6】
- 安卓开发之java基础笔记8常用API
- 安卓开发之java基础笔记十IO流
- Java基础学习笔记_内部类
- java基础--内部类与匿名类
- java基础----final与匿名内部类
- 【Java基础总结】-接口与内部类
- Java内部类与迭代器设计
- java基础之匿名内部类
- Swift的optional
- 高可靠芯片搭配视觉演算法,影像式ADAS满足车规要求
- MySQL5.6源码编译安装(CentOS-6.6+MySQL-5.6)(一)
- Problem A: 假金币
- 页面上现有ProgressBar控件progressBar,请用书写线程以10秒的的时间完成其进度显示工作。
- 安卓开发之java基础笔记7内部类与设计模式
- multithreaddownload
- 总结一下适合自己的看书方式
- 2016 "百度之星" - 资格赛(Astar Round1)
- C++类型操作
- Antlr代码生成及命令行验证
- 请继承SQLiteOpenHelper实现
- 服务器1M带宽同时能承受多少人在线
- 内存泄露分析