Java学习第七天


类成员(static成员):

当使用实例来访问类成员时,系统底层依然是委托该类来访问类成员。因此,即便该类实例为null,她依然可以访问所属类的类成员。

例如:

package lesson5;
class L5 
{
	public static void main(String[] args) 
	{
		Person p = new Person();

		System.out.println(p.eyenum);
		System.out.println(p.age);

		p = null;
		System.out.println(p.eyenum);//静态成员,即便p=null,仍然可以访问。因为实际是通过类访问的。
		//System.out.println(p.age);//出错。因为age为实例成员,此时因为为null,无法通过引用访问到对象了。

	}
}

class Person
{
	static int eyenum = 2 ;//类属性static
	int age = 100;//实例成员

}

 

单例模式(Singleton),主要通过静态变量、静态方法和private构造方法完成。例如:

 

package lesson5;
class L5 extends Person
{
	public static void main(String[] args) 
	{
		Singleton st1  =Singleton.getInstance();
		Singleton st2 = Singleton.getInstance();

		System.out.println(st1==st2);//结果为true,因为st1,st2指向单个唯一的实例对象

	}
     public void test()//不能覆写父类test()方法,否则出错。因为父类test()为final
	{

	}

	private final void test(String str)//由于为private,因此即便子类出现具有重写特征的方法,也不是重写,只是子类的一个新方法。
	{
		//代码不会报错。因为此时test(String str)其实是一个新的方法,与父类的相同签名的方法无关。
	}
}
class Singleton
{
	private static Singleton instance = null;//该静态变量用于缓存实例

	private Singleton()//把构造方法隐藏起来,外部无法继承和实例化该类
	{
	}

    //暴露给外部使用,以便产生唯一一个该类实例
	public static Singleton getInstance()
	{
		if(instance==null)
		{
			//缓存该类实例
			instance = new Singleton();
		}

		return instance;
	}
}

//测试
class Person
{
	final void test()//不能被覆写,因为为final
	{
	}

	private final void test(String str)//由于为private,因此即便子类出现具有重写特征的方法,也不是重写,只是子类的一个新方法。
	{

	}
} 


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值