欢迎来到天天文库
浏览记录
ID:10139191
大小:29.00 KB
页数:6页
时间:2018-06-11
《基于java构造器和static关键字的研究》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、基于Java构造器和Static关键字的研究摘要:Java语言通过构造器完成数据初始化,在继承过程中子类可以调用父类的构造器。Static关键字可以定义静态属性、静态方法和静态代码块,也可以实现数据初始化,但与构造器有所不同。通过对构造器和Static关键字使用方法的研究,分析单态模式实现的过程。关键词:构造器;静态;单态模式中图分类号:TP312.1Java语言属于完全面向对象的编程语言,代码设计的核心是类的设计。类的设计具有封装的特性,在类中封装了属性的描述和方法的描述,在实例化对象过程中如果
2、采用“对象名.属性名”的方式进行显示初始化赋值显然不符合面向对象编程语言封装的特性,并且当类中属性过多、实例多个对象时,赋值代码会批量增多,书写显的十分臃肿。为了解决这个问题,Java语言提供了构造器技术和静态代码块技术实现属性数据的隐式初始化功能,符合面向对象编程语言封装的特性。1构造器6构造器与普通方法不同,普通方法在使用时需要使用“对象名.方法名”进行显示调用,而构造器在对象实例化时能够被Java虚拟机自动调用执行,因此在构造器中对属性成员进行赋值就可以实现隐式自动初始化的功能。在定义上为了
3、区别于普通方法,Java规定构造器的名字必须与类的名字一致,没有返回值,但也不能写void,这样的特殊书写格式能够被Java虚拟机识别[1]。在类的设计过程中如果没有定义构造器,默认类中包含一个空的构造器,但设计者自定义构造器之后,默认的空构造器就不存了,如果使用者仍然使用空构造器实例化对象,编译系统就会报错,提示空构造器未定义。为了避免这种错误,在类的设计时必须手动编写一个空构造器。当需要设计多个构造器时,可以应用Java重载技术,保证各个构造器中参数的个数或类型不同,在实例化对象时,系统会按照
4、参数的个数和类型进行匹配,找到相应的构造器执行。在构造器中形参命名习惯上与属性命名相同,为了区分属性与形参,可以使用this关键字,属性名前加上“this.”同形参区别开来。此外,在构造器中还可以调用构造器,在同一类中构造器调用构造器采用“this(参数列表)”的格式书写,并且语句必须位于构造器中第一行,否则编译系统会报错,提示“Constructorcallmustbethefirststatementina6constructor”。在继承过程中,子类能继承父类的公有属性和公有方法,但不能继承
5、父类的构造器,可以使用super关键字使用“super(参数列表)”的格式调用父类构造器。对于父类构造器调用的语句也必须位于构造器中的第一行。在设计父类时,最好编写一个空构造器,因为子类在继承父类过程中,子类的各个构造器在不指定调用父类指定构造器时,编译系统默认在子类的各个构造器首行调用父类空构造器,如果在父类中未找到空构造器,编译系统会报错,提示“ImplicitsuperconstructorFatherClassName()isundefined.Mustexplicitlyinvokean
6、otherconstructor”。如果在子类的构造器中指定调用父类构造器,默认的父类空构造器就不在调用。2Static关键字Java中属性和方法通常是在实例化对象后通过“对象名.属性名”和“对象名.方法名”进行引用,但对于公共的属性和方法,可以通过Static关键字设置成静态成员。对于静态成员的引用除了用对象名引用方法外,还可以通过“类名.属性名”和“类名.方法名”进行引用,由于不用实例化就可直接引用,因此静态属性和静态方法又叫做类的属性和类的方法。静态属性与非静态属性不同,除了可以被类直接引用
7、特性外,在数据存储上也有区别。对于非静态属性在实例化对象后,在堆内存空间中开辟空间进行数据存储,每实例化一个对象,就分配一份存储空间,而静态属性在堆内存空间中只开辟一次,即数据初始化只有一回,所有实例化的对象共享静态属性数据。6静态方法由于属于类的方法,能够被类直接引用,因此静态方法中只能引用静态属性和其它静态方法,而不能引用非静态属性和非静态方法,因为直接使用类时,还没有实例化对象,非静态属性和非静态方法还没有分配空间进行数据初始化,所以无法引用。而非静态的方法中可以引用非静态的成员,也可以引用
8、静态的成员,因为静态的成员在非静态方法之前初始化。对于main方法,格式为“publicstaticvoidmain(String[]args)”属于静态方法,因此包含main方法的类可以被Java虚拟机直接运行就是这个原理[2]。静态代码块的格式为“static{代码块;}”,可以对静态属性进行数据初始化。但它与构造器进行数据初始化不同,构造器是调用一次,数据就初始化一次,而静态代码块只初始化一次,并且在构造器进行数据初始化之前完成。对于对象生成计数器类的设计可以定义一个静态整型
此文档下载收益归作者所有