黑马程序员_面向对象_修饰符static和构造函数

-------android培训java培训、期待与您交流! ----------

1.static

静态修饰符修饰的变量不存在于堆中,而是存于方法区,该数据被所有该类对象共享(堆栈方法区功能

static函数中,只能使用非静态成员

static特点:

1).随类的加载而加载,属于类,生命周期最长

2).优先于对象而存在

3).被所有的对象共享

4).直接可以使用类名调用

静态代码块,随着类的加载而加载,进入主存,对类的初始化

2.构造函数

当类中没有定义构造函数时,系统会默认一个空参数的构造函数,如果类是public则默认的构造函数会被public修饰如果类被default修饰,则默认构造函数也被default修饰

构造代码块,优先于构造函数而存在

this语句,this(name)语句初始化先执行,必须放在构造函数的第一行

/*
构造函数间的调用以及构造代码块,静态代码块
Strawberry2013-5-11
*/
class Person
{
	String name;
	int age;
	
	{
		//构造函数代码块,new时会执行
	}

	Person(String name)	//会接收this(name)传过来的参数信息
	{
		this.name = name;
	}
	Person(String name, int age)
	{
		this(name);//this语句,该语句会进入能够接收name的构造函数,this语句必须放在第一行
		this.age = age;
	}
	static
	{
		//静态代码块,随类的加载而执行
	}
	//private Person(){}如果不希望该类被new,即成员是static的
}
class Stu extends Person
{
	Stu(String name, int age)
	{
		super(name);
		this.age = age;
	}
/*	Stu(String name, int age)
	{
		super();
		其中隐含有空参数的super语句,
		默认访问父类空参数的构造函数super(),且只能在第一行
		当父类没有空参数的构造函数时,必须指定super语句,
		直接可以,使用父类功能 super(name, age)
	}
*/
}
class Demo
{
	public static void main(String[] args)
	{
		Person p = new Person("zhang", 20);
	}
}



你可能感兴趣的:(黑马程序员_面向对象_修饰符static和构造函数)