动手动脑及课后作业03

1.动手动脑一

答:如果类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法。

2.课后试验一

运行结果:

初始化规律:按照顺序初始化,如果有多个方法对字段初始化,将按照最后一次初始化输出。

3.动手动脑二:请运行TestStaticInitializeBlock.java示例,观察输出结果,总结出“静态初始化块的执行顺序”。

结果:

静态初始化块的执行顺序:1.静态初始化块只执行一次。 2.创建子类型的对象时,也会导致父类型的静态初始化块的执行。

4.静态方法中只允许访问静态数据,那么,如何在静态方法中访问类的实例成员(即没有附加static关键字的字段或方法)? 请编写代码验证你的想法。

代码:

package demo;

//2016.10.20 胡建峰
//静态方法中引用实例数据

public class Staticnum {

	public static void main(String[] args) {
		A.output();
	}
}

class A
{
	int x = 1;//实例数据
	static int y = 0;//静态数据
	
	int getx()
	{
		return x;
	}
	
	static void output()
	{
		System.out.println("实例数据x=" + new A().x);//类的实例化后访问实例数据
		System.out.println("实例数据x=" + new A().getx());//类的实例化后访问实例方法
		System.out.println("静态数据y=" + y);//直接访问静态数据
	}
}

  运行结果:

5.使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数。请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象?”。

代码:

package demo;

//2016.10.20 胡建峰
//查询创造对象数

public class Newnum {

	public static void main(String[] args) {
		C one = new C();//在其中添加双斜线或去掉验证
		C two = new C();
		//C three = new C();
		System.out.println("已创建了" + one.get() + "个对象");
	}
}

class C
{
	static int shu = 0;//计数
	
	C()
	{
		shu ++;
	}
	
	int get()
	{
		return shu;
	}
}

  运行结果:

posted @ 2016-10-20 16:45  丶枫  阅读(178)  评论(0编辑  收藏  举报