黑马程序员--面向对象2(Java)
来源:互联网 发布:java软件设计模式 编辑:程序博客网 时间:2024/05/17 04:26
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
五、this关键字
1.特点:
this代表其所在函数所属对象的引用。简单说,哪个对象调用了this所在的函数,this就代表哪个对象。
2.this应用:
1)、当在函数内需要用到调用该函数的对象时,就用this。(用于区别同名变量的情况,局部变量和成员变量)。
2)、this还可以用于构造函数间的调用。调用格式:this(实际参数);
3.注意:
用this调用构造函数,必须定义在构造函数的第一行。因为构造函数是用于初始化的,所以初始化动作一定要先执行。否则编译失败。
六、static关键字
1.应用:
1)、用于修饰成员(成员变量和成员函数)。
2)、当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外,还可以直接被类名调用。格式:类名.静态成员。
2.特点:
1)、随着类的加载而加载。
2)、优先于对象存在。
3)、被所有对象所共享。
4)、可以直接被类名调用。
3.实例变量(成员变量)和类变量(静态成员变量)的区别:
1)、存放位置。类变量随着类的加载而存在于方法区中;实例变量随着对象的建立而存在于堆内存中。
2)、生命周期。类变量生命周期最长,随着类的消失而消失;实例变量生命周期随着对象的消失而消失。
4.静态使用注意事项:
1)、静态方法只能访问静态成员。
2)、静态方法中不可以定义this,super关键字。因为静态优先于对象存在。所以静态方法中不可以出现this。
5.静态有利有弊:
利处:对对象共享数据进行单独空间的存储,节省空间。没有必要每一个对象中都存储一份。可以直接被类名调用。
弊端:生命周期过长。访问出现局限性。(静态虽好,只能访问静态)。
6.什么时候使用静态(从两方面下手: 因为静态修饰的内容有成员变量和函数):
1)、什么时候定义静态变量呢?
当对象中出现共享数据时,该数据被静态所修饰。对象中的特有数据要定义成非静态存在于堆内存中。
2)、什么时候定义静态函数呢?
当功能内部没有访问到非静态数据(对象的特有数据),那么该功能可以定义成静态的。
7.静态代码块:
1)、格式:
static
{
静态代码块中的执行语句;
}
2)、特点:随着类加载而执行,只执行一次。并且优先于主函数。用于给类进行初始化。
8.静态代码块、构造代码块、构造函数同时存在时的执行顺序:
静态代码块,构造代码块,构造函数。
9.生成Java帮助文档:
1)、命令格式:javadoc –d 文件夹名 –auther –version *.java
2)、格式:
/**
*类描述
*@author 作者名
*@version 版本号
*/
/**
*方法描述
*@param 参数描述
*@return 返回值描述
*/
七、对象的初始化过程:定义一个新对象都做了哪些事情?
1、把类名.class文件加载到内存中。
2、执行该类中的static代码块,如果有得话,给该类进行初始化。
3、在堆内存中开辟空间,分配内存地址。
4、在堆内存中建立对象的特有属性。并进行默认初始化。
5、对属性进行显示初始化。
6、对对象进行构造代码块初始化。
7、对对象进行对应构造函数初始化。
8、将内存地址赋给栈内存中的对象名变量。
八、单例设计模式
1.设计模式:解决问题最行之有效的思想。java中有23种设计模式。
2.单例设计模式:
1)、定义:解决一个类在内存中只存在一个对象。
2)、如何保证对象唯一性呢?
思想:
1,不让其他程序创建该类对象。
2,在本类中创建一个本类对象。
3,对外提供方法,让其他程序获取这个对象。
步骤:
1,因为创建对象都需要构造函数初始化,只要将本类中的构造函数私有化,其他程序就无法再创建该类对象。
2,就在类中创建一个本类的对象。
3,定义一个方法,返回该对象,让其他程序可以通过方法就得到本类对象。
代码体现:
1,私有化构造函数。
2,创建私有并静态的本类对象。
3,定义公有并静态的方法,返回该对象。
饿汉式:(先初始化对象)
class Single{
private Single(){} //私有化构造函数。
private static Single s = new Single(); //创建私有并静态的本类对象。
public static Single getInstance(){ //定义公有并静态的方法,返回该对象。
return s;
}
}
懒汉式:延迟加载方式。(对象是方法被调用时才初始化)
class Single2{
private Single2(){}
private static Single2 s = null;
public static Single2 getInstance(){
if(s==null)
s = new Single2();
return s;
}
}
注意:建立单例,建议使用饿汉式。
- 黑马程序员--面向对象2(Java)
- "黑马程序员"Java面向对象(2)
- 黑马程序员----JAVA----面向对象小结(2)----
- 黑马程序员-java面向对象2
- 黑马程序员-java面向对象2
- 黑马程序员-Java面向对象2
- 黑马程序员---java基础---2面向对象
- 黑马程序员---java基础---面向对象2
- 黑马程序员----java----面向对象2
- 黑马程序员-Java基础:面向对象-2
- 黑马程序员 Java基础 面向对象2
- 黑马程序员 java面向对象(一)
- 黑马程序员 java面向对象(二)
- 黑马程序员--Java类(面向对象)
- 黑马程序员-java面向对象(多态)
- 黑马程序员 JAVA-面向对象(一)
- 黑马程序员 JAVA-面向对象(二 )
- 黑马程序员--面向对象(Java)
- POJ 2778 DNA Sequence(AC自动机确定DFA转移图+矩阵快速幂)
- Fedora15 默认OpenJDK与SunJDK互相切换
- OC总结
- C51知识点拾遗
- Mahout快速入门教程
- 黑马程序员--面向对象2(Java)
- windows下mysql忘记root密码后查看或修改密码的方法
- 6、SDWebImage的使用
- 7、iOS pch文件创建及使用
- NSThread,NSOperation,GCD
- 黑马程序员--java学习总结(6)
- Linux openoffice 安装测试
- java,javac命令行编译参数
- 【解决方案】对不起,请将 php.ini 中的 short_open_tag 设置为 On,否则无法继续安装。