---------------------- android培训、java培训、期待与您交流! ----------------------
在一个类中可以定义一个叫public void finalize()的方法(已尝试,不管是private还是其他返回均报错),在调用system.gc时,就会执行所有的finalize内容;
(后来才知道system.gc只是主动召唤垃圾回收器而已,它不一定来得,所以不能指望finalize()一定会执行,这是不确定的)
类中的Static静态变量在所有的实例中值都相同,就好象是该类所有实例的一个公共变量,可以通过实例名+变量名或者类名+变量名来访问;
静态方法相当于某类共有的方法,和变量类似,也可以用实例名+方法名或者类名+方法名来执行;
在静态方法里只能直接调用同类中其它的静态成员(包括变量和方法),而不能直接访问类中的非静态成员。这是因为,对于非静态的方法和变量,需要先创建类的实例对象后才可使用,而静态方法在使用前不用创建任何对象。
类中
Static
{
Code;
}(从李刚的书中了解到不带static的角初始化块,几乎是类初始化时最优先执行的)
叫做静态代码块,就是说类第一次被调用时会被执行一次,且只执行一次,亲自试验后发现它比构造函数先调用,还有就是先定义的方法可以调用后定义的变量,static代码块的中方法和静态方法的其他注意事项相同;
所谓类的单态设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。
(对这个设计模式做过好几次,刚开始的时候总是稀里糊涂的啊,现在是so easy!哈哈)
实现方法:首先将类的构造函数定义为private则从外边不能直接创建类的新对象;然后在类中定义一个static方法,供外界使用,通过这个static方法返回一个static实例对象;因为static实例对象是类中所有对象共有的,又不能再产生新的其他东西,从而达到这个类只有一个实例的效果,虽然可以指向不同的指针,但是还是指向同一个实例;
如果用static修饰一个内部类,这个类就相当于是一个外部定义的类,所以static的内部类中可声明static成员,但是,非static的内部类中的成员是不能声明为static的。static的内部类不能再使用外层封装类的非static的成员变量,这个道理不难想象!所以static嵌套类很少使用。
public class Outer
{
private int size;
public class Inner
{
private int size;
public void doStuff( int size)
{
size++; // 引用的是doStuff函数的形参
this.size++; //引用的是Inner类中的成员变量
Outer.this.size++; // 引用的Outer类中的成员变量//在后两面那两个面试题的视频用来好几次
}
}
}
【内部类如何被外部引用】
class Outer
{
private int size=10;
public class Inner
{
public void doStuff()
{
System.out.println(++size);
}
}
}
public class TestInner
{
public static void main( String[] args)
{
Outer outer = new Outer();
Outer.Inner inner = outer.new Inner();
inner.doStuff();
}
}
(方法中的内部类的可见性非常小,连外部类也访问不了,只能是方法内部访问,这时可以使用另外定义一个接口来联系它们;)
嵌套类并非只能在类里定义,也可以在几个程序块的范围之内定义内部类。例如,在方法中,或甚至在for循环体内部,都可以定义嵌套类 。
在方法中定义的内部类只能访问方法中的final类型的局部变量,用final定义的局部变量相当于是一个常量,它的生命周期超出方法运行的生命周期。
使用Java的文档注释
Java/**comments*/类型的注释一定要放在类定义的前面,不能放错位置;
import java.io.*;
/**
* Title: engineer类<br>
* Description: 通过engineer类来说明java中的文档注释<br>
* Copyright: (c) 2003 www.it315.com<br>
* Company: 锐智科技咨询中心<br>
* @author 张孝祥
* @version 1.00
*/
public class engineer
{
public String Engineer_name;
/**
* 这是engineer对象的构造函数
* @param name engineer的名字
*/
public engineer(String name)
{
}
/**
* 这是repairing方法的说明
* @param sum 需要修理的机器总数
* @param alltime 需要修理的总时间
* @return Repairing的数量
*/
public int repairing(int sum,int alltime)
{
}
}
【可以做注释的类必须是public的,所以说文件名和类名要相同】
命令示例:javadoc –d engineer –author –version engineer.java
---------------------- android培训、java培训、期待与您交流! ----------------------