Java 类的一些基本语法

来源:互联网 发布:风控模型算法 编辑:程序博客网 时间:2024/05/21 05:56

本文主要通过对比C++来说明Java类的特性

类和对象的概念在C++已经接触不少,在Java中,类的组织方式与C++有一些区别。

对象的声明与定义之前以及讨论过,这与C++有很大的不同,接下来继续介绍更多的特性

Java类::

类内成员种类:实例域、静态域、方法、静态方法、main方法、工厂方法。

 

实例域:类比C++类内数据成员,需要说明的几点是:

(1)     实例变量具有默认值,受其类型所影响,数值型为0,布尔型为false,引用为null

(2)     每个实例变量前需要使用访问说明符来限定其访问权限,若不加则默认为包可见,这大大破坏了类的封装性。

静态域:类比C++类内静态数据成员。

静态方法:类比C++类内静态函数

需要注意的是:对于静态域、静态方法的访问访问方法与C++有所不同,不用::,而直接使用类访问,和C++相似,java也之处通过对象访问。

 

方法:类比C++成员函数,同样需要访问说明符,若不增加则为包可见。这里需要注意方法参数:Java中方法参数传递的方式默认为值传递(call by value),因此考虑之前数据的储存方式,可以理解方法能够对被传递的变量造成哪些影响。(可以用几个简单swap方法做实验),此外java方法也可以被重载,重载类比C++函数重载。

 

main方法:理论上,java每个类都可以有一个main方法用于测试main()方法的声明必须为:public static voidmain(String args[])。

为什么要这么定义,和JVM的运行有关系。

当一个类中有main()方法,执行命令“java类名”则会启动虚拟机执行该类中的main方法。

由于JVM在运行这个Java应用程序的时候,首先会调用main方法,调用时不实例化这个类的对象,而是通过类名直接调用因此需要是限制为publicstatic。

对于java中的main方法,jvm有限制,不能有返回值,因此返回值类型为void。

main方法中还有一个输入参数,类型为String[],这个也是java的规范,main()方法中必须有一个入参,类细必须String[],至于字符串数组的名字,这个是可以自己设定的,根据习惯,这个字符串数组的名字一般和sun java规范范例中mian参数名保持一致,取名为args。

因此,main()方法定义必须是:“publicstatic void main(String 字符串数组参数名[])”。

 

再谈一谈对象构造

Java中对象构造经历一下几个过程:

(1)     所有数据域被默认初始化为默认值。

(2)     按照在类中声明的次序,依次执行所有域的初始化语句和初始化块。

(3)     如果构造函数第一行调用了类内其他构造器,则执行第二个构造器主体(this()、super()实现)

(4)     执行本构造器主体。

一些小细节:java中的构造器和C++中构造函数相似基本可以类比,java没有初始化列表,java构造器调用其他构造器的特性可类比C++11中的委托构造函数。

 

对象析构

  由于java有自动的垃圾回收器,因此java不支持析构函数。如果java程序使用了其他资源需要主动释放,可以添加finalize方法,此处不深究。

 本人不才,如有问题,欢迎指出。

原创粉丝点击