java面向对象(二)
一.static(静态)关键字
用法:是一个修饰符,用于修饰成员(成员变量,成员函数)。
Static特点:
1,随着类的加载而加载,随着类的消失而消失,即它的生命周期最长。
2,优先于对象存在。(静态先存在,对象后存在。)
3,被所有对象所共享。
4,可以直接被类名调用。(类名.静态成员。)
实例变量和类变量的区别:
1,存放位置:类变量随着类的加载而存在于方法区中;实例变量随着对象的建立而存 在于堆内存中。
2,生命周期:类变量生命周期最长,随着类的消失而消失;实例变量生命周期随着对象的消失而消失。
静态使用注意事项:
1,静态方法只能访问静态成员。(非静态方法既可以访问静态也可以访问非静态。)
2,静态方法中不可以定义this,super关键字。
3,主函数是静态的。
例:
class Person
{
String name;//成员变量即实例变量。
static int age=15;//静态的成员变量即类变量。
public static void run()
{
System.out.println(“age=”+age);
}
}
class StaticDemo
{
public static void main(String[]args)
{
Person.run();//直接用类名调用。
}
}
什么时候使用静态?
从两方面入手:成员变量和函数.
定义静态(类)变量:当对象中出现共享数据时,该数据被静态所修饰,对象中的特有数据要定义成非静态存在于堆内存中。
定义静态函数:当功能内部没有访问到非静态数据(对象的特有数据),该功能可以定义成静态的。
静态代码块:
格式:
static
{
执行语句;
}
特点:随着类的加载而执行,只执行一次,并优先于主函数。用于给类进行初始化。
示例:
运行结果为:a b c over
二.设计模式:解决某一问题最行之有效的方法(Java中有23种设计模式)
单例设计模式:解决一个类在内存中只存在一个对象。
为了保证对象的唯一:
1,为了避免其他程序过多建立该类对象,先禁止其他程序建立该类对象。
2,为了让其他程序可以访问到该类对象,在本类中自定义一个对象,
3,为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式。
三部的代码体现是:
1,将构造函数私有化。
2,在类中创建一个本类对象。
3,提供一个方法可以获取到该对象。
A.饿汉式:
class Single
{
private Single(){}
private static Single s = new Single();
public static Single getInstance()
{
return s;
}
}
B.懒汉式:
class Single
{
private static Single s = null;
private Single(){}
public static Single getInstance()
{
if(s==null)
{
synchronized(Single.class)
{
if(s==null)
s=new Single();
}
}
return s;
}
}
饿汉式的简单应用: