面向对象中比较重要的this,static,super,单利设计的总结和归纳
来源:互联网 发布:web3.0与云计算 编辑:程序博客网 时间:2024/06/05 11:42
/*
面向对象中比较重要的this,static,super,单利设计的总结和归纳
*/
在上一讲中,我们贯穿讲解了面向对象中的一些三大支柱,那么在这一讲中,我们将介绍三个常见关键字的理解。
this:this的应用看上去很复杂,但实际上,它就是指当前对象。this最经典的用法是在当局部变量或者参变量与成员变量名相同的时候,我们如何操作呢?这就是重点。比如:
class Fu
{
private String name;
private int age;
Fu(String name ,int age)
{
this.name=name;
this.age=age;
}
}这段程序就是对this的一个经典引用。当构造函数的参变量与成员变量同名的时候,不能写成name=name。但是我们要使用构造函数初始化成员,怎么办呢?只能使用this关键字登场啦!这个对象的name=参变量的name。这样来理解。
构造函数可以调用成员函数,采用的是对象调用方式。但是多个构造函数怎么来调用呢?如果使用对象调用就会有麻烦?因为实例化对象的时候会调用与之对应的构造 函数。该对象的引用就是指向对应 的,那么此时想调用其他的构造函数怎么办?解决这个问题,this关键字就派上用场了。
class Fu{
private String name;
private int age;
Fu(String name)
{
this.name=name;
}
Fu(String name ,int age)
{
this.name=name;
this.age=age;
}
}这样写代码是可以的,但是我们觉得不高效。明显感觉这一块有复制多余痕迹
Fu(String name ,int age)
{
this.name=name;
因为之前已经做过这件事了,现在又来重复。没有调高代码复用性。因为有一个构造函数,刚好处理过这个问题,如果此时可以复用它多好!
运行的结果为:
此时使用this可以使得构造函数可以相互调用。这种思维在我们学习开发的过程中应该相当重视,如果有现成的,那么我们就应该调用。这是开发中使用API开发中要特别注意的知识点!
static:
这是一个静态关键字。用来修饰成员(包括成员变量和成员函数)
被静态修饰的成员具有以下几个特点:
(1):随着类的加载而加载。
(2):它优先于对象存在,因为它是定义类后,就会存在于类中。而对象需要实例化后才会存在。
(3):被所有对象所共享,是一个公共区域,其作用类似于构造代码块。
(4):它的访问除了对象操作,还可以由类名直接操作。
一般情况下能不用就避免使用static因为它的存在周期是整个类中,随着类的消失而消失。很浪费内存空间。使用static要特别注意以下几点:
(1)静态方法只能访问静态成员(静态变量,静态函数)
(2)静态方法中不能使用this和下面要讲的super关键字,因为this和super分别指的是:当前对象和它的父类对象。有了对象才可以使用。static优先于对象,所以不能使用。
(3)主函数是静态的,是程序的唯一的入口!
那么接下来问题来了?什么时候使用静态?
当对象中出现数据共享的时候,该数据就应该被定义为静态修饰。这是对于静态变量说的。
那么什么时候定义成静态函数呢?
当功能内部没有使用到非静态数据时,那么就可以将该函数定义为静态。这种函数往往为工具类函数,比如:比较,排序,等等这类功能会比较方便。直接使用类名操作避免创建对象浪费栈内存空间。
super:
super关键字的使用在本质意义上与this是异曲同工之妙。不同的是指向不同,但用法和它的实际意义是相同的。
单利模式:
那么问题来了?什么是单利模式?解决一个类中只能存在一个对象。看到这里可能很多人都会很迷糊,因为new不就产生了一个对象么?如何才能做到只能有且仅有一个呢?
我们把构造函数私有化,此时自然就不可以在通过new来创建对象了。那么我们怎么使用对象呢?当然是用封装过程中提供的方法来访问对象啦!
单利设计的本质就是私有化,然后提供方法获取操作。尤其要注意提供的引用为私有静态常量。这个核心知识点。
与懒汉式最大的区别的是:饿汉式一旦建立引用就必须要制定对象。懒汉式就是延时加载,需要的时候就创建对象,这个有线程危险。需要锁定同步代码块。
- 面向对象中比较重要的this,static,super,单利设计的总结和归纳
- JAVA中this和super的比较
- 面向对象一______之继承、super和this的比较
- super和this的比较
- java中this和super的总结
- Java中super关键字和this关键字的比较
- JAVA this和super的比较
- this和super的用法比较
- Java中this和super的用法总结
- Java中this和super的用法总结
- Java中this和super的用法总结
- Java中this和super的用法总结
- Java中this和super的用法总结
- Java中this和super的用法总结
- Java中this和super的用法总结
- Java中this和super的用法总结
- Java 中this和super的用法总结
- Java中this和super的用法总结
- ubuntu下eclipse tomcat jdk8组合进行j2ee开发
- CSS中表示cellpadding和cellspacing的方法
- Combinations
- [Hive]Hive多分区操作
- 回溯法
- 面向对象中比较重要的this,static,super,单利设计的总结和归纳
- Android的三种网络通信方式
- 地宫取宝
- 欢迎使用CSDN-markdown编辑器
- ZOJ 2091 Mean of Subsequence(博弈,反证法,结论巧妙)
- 本科生以及研究生信息
- ubuntu 安装 wps
- 欢迎使用CSDN-markdown编辑器
- Python核心编程第七章笔记及习题记录