说明文档生成{
要用java生成doc,必须为public类
说明文档中只提供public protected成员信息
格式:/** 需要在文档中显示的信息 */ @param (写上参数的信息) @return (返回值的信息)
例:
/**
获取整型数组的最大值。
@param arr 接收一个元素为int类型的数组。
@return 该数组的最大的元素值
*/
public static int getMax(int[] arr)
{
int maxIndex = 0;
for(int x=1; x<arr.length; x++)
{
if(arr[x]>arr[maxIndex])
maxIndex = x;
}
return arr[maxIndex];
}
命令行 javadoc -d 文件名(不更换文件直接用 . ) ***.java
生成的说明文档中可以查看到类中的除private外的所有函数,以及参数列表,
}
继承{
作用:提高复用性,让类之间有关系,为多态提供前提条件
类之间只有单继承,不直接支持多继承,因为有可能多个父类中有共同项产生不确定性
继承后,子父类出现同名成员,调用的时候子类有则不去父类找
子父类函数相同,继承后子类覆盖了父类函数,注意:子函数权限要大于等于父函数权限,子函数为static父函数必须为static
构造函数{
1.构造函数不会继承,子类构造函数的第一行为一条默认空参数的super(),
2.super()目的是调用父类空参数的构造函数
3.父类中没有空参数的构造函数的话就编译失败,解决办法是显示调用父类相应的构造函数
4.所有类都是继承自object类,所以都有一个默认的空参数的构造函数,里面有一个空参数的super()以及return语句;
5.构造函数中this()和super()只有一个
}
子类实例化过程{
子类所有构造函数都有默认父类空参数构造函数,子类继承父类,获取父类内容,在使用父类内容之前要先看父类是如何对自己的内容进行初始化的
class Father{
Father(){
show();
}
void show(){
System.out.println("father show ");
}
}
class Son extends Father{
int i = 8;
Son(){
super();//此时 i为0
System.out.println("son show " + i);//此时父类构造函数初始化结束,i为8
}
void show(){
System.out.println("son show " + i);
}
}
class Demo{
public static void main(String[] args){
Son s = new Son();
s.show();
}
}
输出:
son show 0
son show 8
son show 8
说明:
1.JVM读取指定路径下Father,class文件加载进内存,再读取Son.class文件加载进内存
2.堆内存中开辟空间分配地址
3.在对象空间中,对对象的属性默认初始化即把0赋给i
4.调用构造函数进行初始化
5.在构造函数中先到父类构造函数,并进行初始化此时show()应该为this.show(),即子类的show()
6.父类构造函数初始化之后,对子类属性进行显示初始化,把8赋值给i
7.再执行子类构造函数中剩下的初始化语句
8.初始化完毕,将地址赋给引用变量s
}
this与super{
类成员与局部变量同名,用this调用类对象成员,this代表本类对象的引用
子类与父类成员变量同名,用super调用父类成员,super代表父类空间
}
分析程序
class Father{
int i = 4;
}
class Son extends Father{
int i = 5;
}
class Demo{
public static void main(String[] args){
Son son = new son();
}
}
main函数进栈——>在方法区先加载父类,再加载子类——>堆内中创建对象(该对象内有两个变量i,存储在不同区域,要调用父类i使用super.i)
}
设计模式(仅仅是一种思想,一个解决问题的方案,没有固定的代码)之 单例设计模式{
要求该类只能创建一次对象,保证唯一性方案{
1.有且仅有一个new
2.在本类中直接new
3.定义函数对外提供该new的引用(提供一个静态方法调用静态对象而不是直接类名调用静态对象是 由于函数可以保证可控制性)
}
步骤{
1.私有化该类构造函数
2.new一个对象,赋给静态引用,保证在静态函数中被调用
3.定义一个static方法,保证用类名直接调用,返回该对象引用
}
代码一:
class Single{
static Single single = new Single();
private Single(){}
public static Single getInstance(){
return single;
}
}
称为饿汉式,加载类的时候就创建对象。适合在开发中使用
代码二:
class Single{
static Single single = null;
private Single(){}
public static Single getInstance(){
if (single == null)
single = new Single();
return single;
}
}
称为懒汉式,延迟加载,等到调用该类函数的时候才创建对象,经常用于面试不适合在开发中使用,因为在多线程编程时,有可能保证不了对象的唯一性
}