`

黑马程序员--java基础复习--构造函数、this、静态和final

 
阅读更多

---------------------- ASP.Net+Android+IO开发S.Net培训、期待与您交流! ---------------------

构造函数

  每个类都默认带有一个无参的构造函数

class Person{
	//public Person(){} 虚拟机默认定义的
}

 如果程序员自己定义了一个构造函数的话,java虚拟机就不会再给类默认定义一个无参的构造函数这时候如果还需要无参的构造函数的,就必须程序员自行定义

Class Person{
	private int age;
	public Person(int age){
		this.age = age;
	}
	public Person(){}
}

 构造函数的访问权限是可以定义的,如果将public 改为private,再加上一些代码,就可以实现单例设计了,单例里边还设计了static和final修饰符,static就是静态。所以先解释一下静态

静态

  静态就是将类的成员定义为静态的,这个成员属于类,而不需要任意对象来获得它的使用权,只要类的.class字节码被加载进内存,类的静态成员就一起被加载进内存中,通过类名就可以直接对其进行调用。那什么时候要用到静态呢?

  如果一个成员变量时属于所有类的对象所共有的,比方说人这个类的对象都有2个眼睛,一个鼻子什么的,就可以将眼睛和鼻子定义成静态。另外比如Color类中的一些表示颜色种类的成员:RED,YELLOW,INK等这些成员属于Color类,将它们定义成静态的要使用颜色的时候,就不用先实例一个Color对象再来获得RED属性了,直接用Color类名就可以调用了。

final

  final可以用来修饰类、成员变量、形参、方法,修饰类的时候表示这个类不可以再被继承,修饰成员变量和形参的时候表示这个变量不能再被改变,其中修饰成员变量时,要么在定义成员变量时初始化赋值,要么在构造函数中赋值,当成员变量是静态的时候,就只能在定义的同时赋值,因为静态成员变量属于类,在类加载进内存的时候就必须存在,而不能等要创建类对象的时候再来初始化。

 

通过单例设计模式,可以很好的理解static和constructor

public class Single {
	//将构造函数私有化,外人无法创建对象
	private Single(){
		
	}
	
	//在类内部定义一个类的对象
	private static Single s = null;
	
	//提供一个方法让外人获得类内部对象,该设计方法为懒汉式设计,在别人要用的时候再创建类对象
	
	public static Single getInstance(){
		//通过双重判断来提高效率
		if(null == s){
			//通过锁来保证只有一个对象被创建
			synchronized (Single.class){
				if(null == s)
					s = new Single();
				return s;
			}
		}
		return s;
	}
}

 

另外,java中的this关键字也要清楚

  this只要注意两个地方:1、在构造函数中出现的this表示被构造的对象

             2、在方法里边出现的this表示调用该方法的对象

  另外,在类内部,系统自带this指针,我们在类内部调用本类方法不用写类名就是因为this这个家伙。

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net

0
3
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics