黑马程序员_内部类和文档注释

来源:互联网 发布:漯河网络推广 编辑:程序博客网 时间:2024/05/22 01:03

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

内部类:

顾名思义就是在类中再定义类,外面的类称为外部类,外部类中定义的类称为内部类,内部类可声明成public或private,当内部类声明成public或private时,对其访问的限制与成员变量和成员方法完全相同。定义格式:

标识符 class 外部类的名称// 外部类{// 外部类的成员标识符 class 内部类的名称// 内部类{// 内部类的成员}}

举个例子说明:

class Outer{private int result=92,x=29;public void createInner(){Inner in = new Inner();in.show();}private class Inner{private int result = 24;//内部类有同名的成员时,会优先使用内部成员private void show(){System.out.println("原来的成绩: result = "+Outer.this.result+",更新后成绩: result = "+result);System.out.println("初始化的值:x = "+x);}}public void method(final int a)//传入的参数也要被定义为final{//int x = 27;//要被声明为final类型才能被内部类访问final int x = 27;//private class InnerMethod//内部类定义在局部时,不可以被成员修饰符修饰class InnerMethod{private int result = 22;//内部类有同名的成员时,会优先使用内部成员private void show(){System.out.println("a = "+a+",update_result = "+result);System.out.println("初始化的值:x = "+Outer.this.x+",方法中的值:x = "+x);//可以直接访问外部类中的成员,因为还持有外部类中的引用,但是不可以访问它所在的局部中的变量,只能访问被final修饰的局部变量。}}new InnerMethod().show();}}public class InOutClassTest{public static void main(String[] args){//new Outer().new Inner().show();//加上private后就不可以这样调用new Outer().createInner();new Outer().method(20);}}
运算结果如下:C:\Users\lenovo\Desktop>javac InOutClassTest.javaC:\Users\lenovo\Desktop>java InOutClassTest原来的成绩: result = 92,更新后成绩: result = 24初始化的值:x = 29a = 20,update_result = 22初始化的值:x = 29,方法中的值:x = 27

内部类的总结:

1、内部类可以直接访问外部类中的成员,包括私有,之所以可以直接访问外部类中的成员,是因为内部类中持有了一个外部类的引用,格式:外部类名.this
2、外部类要访问内部类,必须建立内部类对象。

文档注释:

Java支持的注释有// 和/*… */,还有一种被称为文档注释。它以“/**”开始,以“*/”标志结束。文档注释提供将程序信息嵌入到程序中的功能。开发者可以使用javadoc工具将信息取出并转换为HTML文件。文档注释提供了编写程序文档的便利方式。

识别标记如下:

Tag标记和意义

@author确定类的作者@deprecated指示反对使用这个类或成员{@docRoot}指定当前文档的根目录路径(Java2的1.3版新增)@exception确定一个方法引发的异常{@link}插入对另一个主题的内部链接@param为方法的参数提供文档@return为方法的返回值提供文档@see指定对另一个主题的链接@serial为默认的可序列化字段提供文档@serialData为writeObject()或者writeExternal()方法编写的数据提供文档@serialField为ObjectStreamField组件提供文档@since当引入一个特定改变时,声明发布版本@throws与@exception相同@version指定类的版本

文档注释的一般形式:

在用/**开头后,第一行,或者头几行是类、变量或方法的主要描述。其后可以包括一个或多个不同的@标记,每个@标记必须在一个新行的开头,或者跟随一个星号(*)之后,同类型的多个标记应该组合在一起。

举个文档注释的例子:

/***Title: PersonJavaDoc<br>*Description: 通过PersonJavaDoc类来说明Java中的文档注释<br>*Copyright:(c) 2012 www.itheima.com<br>*Company : itheima java </br>*@author y_heima*@version 1.00*/public class PersonJavaDoc{private String name = "Careers";private String sex = "male";private int age = 30;/***这是PersonJavaDoc对象无参数的构造方法*/public PersonJavaDoc(){}/***这是PersonJavaDoc类的有参构造方法*@param name PersonJavaDoc的名字*@param sex PersonJavaDoc的性别*@param age PersonJavaDoc的年龄*/public PersonJavaDoc(String name,String sex,int age){this.name = name ;this.sex = sex;this.age = age;}/***这是设置name的值的方法,将参数name的值赋给变量this.name*@param name PersonJavaDoc的名字*/public void setName(String name){this.name = name;}/***这是取得name的值的方法*@return name的值*/public String getName(){return name;}/***这是设置sex的值的方法,将参数sex的值赋给变量this.sex*@param sex PersonJavaDoc的性别*/public void setSex(String sex){this.sex = sex ;}/***这是取得sex的值的方法*@return sex的值*/public String getSex(){return sex;}/***这是设置age的值的方法*@param age PersonJavaDoc的年龄*/public void setAge(int age){if(age<0)this.age = 0;elsethis.age = age;}/***这是取得age的值的方法*@return age的值*/public int getAge(){return age;}/***这是输出PersonJavaDoc的方法*/public void shout(){System.out.println("我是:"+name+",性别:"+sex+",今年:"+age+" 岁!");}}
运行命令是:javadoc -d PersonJavaDoc -version -author PersonJavaDoc.java-d:表示生成目录,目录名称为PersonJavaDoc-version:表示要求javadoc程序在说明文件中加入版本信息。-author:表示要求javadoc程序在说明文件中加入作者信息。如:C:\Users\lenovo\Desktop>javadoc -d PersonJavaDoc -version -author PersonJavaDoc.java正在装入源文件 PersonJavaDoc.java...正在构造 Javadoc 信息...标准 Doclet 版本 1.6.0_32正在构建所有软件包和类的树...正在生成 PersonJavaDoc\PersonJavaDoc.html...正在生成 PersonJavaDoc\package-frame.html...正在生成 PersonJavaDoc\package-summary.html...正在生成 PersonJavaDoc\package-tree.html...正在生成 PersonJavaDoc\constant-values.html...正在构建所有软件包和类的索引...正在生成 PersonJavaDoc\overview-tree.html...正在生成 PersonJavaDoc\index-all.html...正在生成 PersonJavaDoc\deprecated-list.html...正在构建所有类的索引...正在生成 PersonJavaDoc\allclasses-frame.html...正在生成 PersonJavaDoc\allclasses-noframe.html...正在生成 PersonJavaDoc\index.html...正在生成 PersonJavaDoc\help-doc.html...正在生成 PersonJavaDoc\stylesheet.css...C:\Users\lenovo\Desktop>

在硬盘上新生成了一个PersonJavaDoc的文件夹, 打开文件夹里的index.html文件可以看见如下所示的界面:

PersonJavaDoc

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

详细请登录:http://edu.csdn.net/heima