面向对象 静态篇
2016-01-05 16:35
197 查看
静态 可以修饰类 也可以修饰类的成员(属性和方法)
static (静态)
静态是在堆内存中创建一块存储区域,将相同的属性放在同一个区域里
非静态:
注意:
1.非静态的成员属性对象必须通过一个new 出来的对象才能访问
2.非静态的属性对象每个各持一份
静态的属性在所有对象创建之前就在内存中存在了
静态的属性不能通过对象访问 已经 不再属于具体的某个对象而是属于所有的对象,属于类的类名、属性
类名.属性
使用场合:当某个属性不属于某一个对象
静态的方法:
静态的方法不能通过对象调用 基于类来调用
静态方法不能访问非静态方法
而在非静态的是可以访问静态的成员
工具方法适合做静态
静态类不能被实例化
一旦创建了静态类,类中的属性和方法必须是静态的。而没有加静态,则可以写非静态和静态的混合。
设计模式:
单例模式:
只能允许一个控制所有的对象,类似管理员或者导演的角色。
步骤:
1.构造方法私有化
2.提供一个静态的本类的一个字段 属性
3.提供一个公开的静态方法返回创建对象(在方法里通过一定的逻辑来控制)
例子:
public class Class2
{
private static Class2 dx; //创建一个私有化单例引用
public static Class2 ff() //创建一个公开的方法 并且在堆内存中建立一块静态的存储区域。
{
if (dx == null)
{
dx = new Class2(); // 创建一个新的dx引用。
}
return dx; //并返回一个dx引用,返回的引用指向同一个堆中的地址,原有的引用销毁。
}
public List<int> list { get; set; }
private Class2()
{ //在class2创建出来的时候初始化一个list 泛型集合并且指向这个类的集合
list = new List<int>();
}
}
}
注:
通过单例模式设计的对象无论怎么创建都是一个对象,且都只访问这个对象的值。
static (静态)
静态是在堆内存中创建一块存储区域,将相同的属性放在同一个区域里
非静态:
注意:
1.非静态的成员属性对象必须通过一个new 出来的对象才能访问
2.非静态的属性对象每个各持一份
静态的属性在所有对象创建之前就在内存中存在了
静态的属性不能通过对象访问 已经 不再属于具体的某个对象而是属于所有的对象,属于类的类名、属性
类名.属性
使用场合:当某个属性不属于某一个对象
静态的方法:
静态的方法不能通过对象调用 基于类来调用
静态方法不能访问非静态方法
而在非静态的是可以访问静态的成员
工具方法适合做静态
静态类不能被实例化
一旦创建了静态类,类中的属性和方法必须是静态的。而没有加静态,则可以写非静态和静态的混合。
设计模式:
单例模式:
只能允许一个控制所有的对象,类似管理员或者导演的角色。
步骤:
1.构造方法私有化
2.提供一个静态的本类的一个字段 属性
3.提供一个公开的静态方法返回创建对象(在方法里通过一定的逻辑来控制)
例子:
public class Class2
{
private static Class2 dx; //创建一个私有化单例引用
public static Class2 ff() //创建一个公开的方法 并且在堆内存中建立一块静态的存储区域。
{
if (dx == null)
{
dx = new Class2(); // 创建一个新的dx引用。
}
return dx; //并返回一个dx引用,返回的引用指向同一个堆中的地址,原有的引用销毁。
}
public List<int> list { get; set; }
private Class2()
{ //在class2创建出来的时候初始化一个list 泛型集合并且指向这个类的集合
list = new List<int>();
}
}
}
注:
通过单例模式设计的对象无论怎么创建都是一个对象,且都只访问这个对象的值。
相关文章推荐
- A simple Scala call-by-name example
- leetcode之3Sum
- Linux服务器操作系统如何选择
- C# 序列化
- 裁剪nutch 8步骤
- ifconfig中lo、eth0、br0接口
- C# 序列化
- Service的粘性
- linux系统中的root超级权限的控制
- 基于事件分发机制,以最小代价实现listview顶部悬浮效果
- 裁剪nutch 8步骤
- 微信支付(APP)
- 关键字-const
- 九十分钟极速入门Linux——Linux Guide for Developments 学习笔记
- meter-察看结果树-响应数据,中文显示乱码问题处理
- android ProgressDialog 不显示的提示信息的问题
- easyui datagrid 行数据处理
- android三种方式实现自由移动的view
- Apache shiro集群实现 (一) shiro入门介绍
- @Column