面向对象
9.帮助文档的制作
9.1注释
- 原则:
1、注释形式统一
在整个应用程序中,使用具有一致的标点和结构的样式来构造注释。如果在其它项目中发现它们的注释规范与这份文档不同,按照这份规范写代码,不要试图在既成的规范系统中引入新的规范。
2、注释内容准确简洁
内容要简单、明了、含义准确,防止注释的多义性,错误的注释不但无益反而有害。
- 注释格式:
1. 单行(single-line)注释:“//……”
2. 块(block)注释:“/……/”
3. 文档注释:“/*……/”
P.S. 注释引用@shiyuezhong: java代码注释规范
9.2 eclipse生成文档的方法
使用eclipse生成文档(javadoc)主要有三种方法:
在项目列表中按右键,选择Export(导出),然后在Export(导出)对话框中选择java下的javadoc,提交到下一步。
在Javadoc Generation对话框中有两个地方要注意的:
javadoc command:应该选择jdk的bin/javadoc.exe
destination:为生成文档的保存路径,可自由选择。
按finish(完成)提交即可开始生成文档。用菜单选择:File->Export(文件->导出),
剩下的步骤和第一种方法是一样的。选中要生成文档的项目,然后用菜单选择,
Project->Generate Javadoc直接进入Javadoc Generation对话框,剩余的步骤就和第一种方法在Javadoc Generation对话框开始是一样的。
10.对象的初始化过程
class Person{
private String name="张某";
private int age;
private static String country = "cn";
Person(String name, int age){
this.age = age;
this.name = name;
}
{
System.out.println(name+".."+age);
}
public void setName(String name){
this.name = name;
}
public void speak(){
System.out.println(this.name+"..."+this.age);
}
public static void showCountry(){
System.out.println("country"+country);
}
}
class PersonDemo{
public static void main(String[] args){
Person p = new Person("张三",20);
p.setName("李四");
}
}
Person p = new Person(“张三”,20);
先将Person.class文件通过jvm从硬盘加载入内存空间,并开辟堆内存空间;
- 执行该类中static代码块,如果有的话,给Person.class类进行初始化;
- 栈内存中创建一个main,p变量,堆内存中创建一个new Person()并分配地址;
- 在堆内存创建对象特有属性name和age,并默认赋予初始化值(name=null,age=0),接着对这两属性显式初始化(name=”张某”);
- 对对象进行构造代码块初始化;
- 对对象进行对应的构造函数初始化(name=”张三”,age=20);
将new Person()内存地址赋给栈内存中p变量。
p.setName(“李四”);
ps:非静态变量或者功能前一般省略this,静态变量或功能前省略类名;
11.单例模式
单例设计模式:解决一个类在内存只存在一个对象。
11.1 为何保证对象唯一:
- 为了避免其他程序过多建立该类对象,先禁止其他程序建立该类对象;
- 还为让其他程序可以访问到该对象,只好在本类中,自定义一个对象;
- 为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式。
11.2 如何实现:
- 将构造函数私有化;
- 在类中创建一个本类对象;
- 提供一个方法可以获取到该对象。
11.3 代码形式:
a)饿汉式:先初始化对象
class Single{
private Single(){};//将构造函数私有化;private static Single s = new Single();//在类中创建一个本类对象; public Single getInstance() { return s;//提供一个方法可以获取到该对象 }
}
class SingleDemo{
public static void main(String[] args){
Single ss = single.getInstance();
Single s1 = single.getInstance();
}
}
- b)懒汉式:对象在方法被调用时才初始化,即对象的延时加载
class Single{
private Single(){};//将构造函数私有化;
private static Single s = null;
public Single getInstance()
{
if(s==null)
s = new Single();
return s;//提供一个方法可以获取到该对象
}
}
class SingleDemo{
public static void main(String[] args){
Single ss = single.getInstance();
Single s1 = single.getInstance();
}
}
说明:懒汉式的Single一进内存,就建好了对象;饿汉式,Single类进内存,对象还没存在,只有调用getInstance方法时,才建立对象。但应用时建议采用饿汉式
例:
class Student{
private int age;
private Student(){};//将构造函数私有化;
private static Student s = new Student();//在类中创建一个本类对象;
public Student getStudent()
{
return s;//提供一个方法可以获取到该对象
}
public void setAge(int age)
{
this.age = age;
}
public void getAge(int age)
{
return age;
}
}
class SingleDemo{
public static void main(String[] args){
Student s1 = Student.getStudent();
Student s2 = Student.getStudent();
}
}