您的位置:首页 > 职场人生

黑马程序员:Java之介绍对象、封装、构造函数、构造代码块及this关键字

2013-10-18 17:23 239 查看
----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------

什么是面向对象?

面向对象是一种将复杂的东西简单化的思想,有三个特征:封装、继承、多态

从生活出发,理解类与对象的关系

类:对现实生活中事物的描述,描述包含事物的属性和行为

对象:这类事物,实实在在存在的个体

举个简单的例子:

技术主管吩咐开发专员开发一个功能模块。

开发专员就是一个对象,技术主管只要通过这个对象就可以实现想要的功能,而开发专员具体怎么开发技术主管不需要知道。

成员变量与成员函数

上面讲到类就是对事物的描述,包含事物的属性和行为,即变量与方法,定义的变量为成员变量,方法为成员函数。

成员变量与局部变量的作用范围

成员变量:成员变量作用于整个类中

局部变量:局部变量作用于函数中或语句中(for语句)

成员变量与局部变量在内存中的位置

成员变量:在堆内存中,随对象的存在而存在。不赋值也可参与运算,堆内存中的变量会自动默认初始化

局部变量:存在栈内存中。不赋值是不能参与运算的。栈内存中的变量不会默认初始化

建立对象的方法:

注:对象存在与堆内存中,p是一种类类型变量,属于一种引用型变量,p引用堆内存中的new Person()

匿名对象

格式:new Person();

匿名对象的使用方式

当对对象的方法只调用一次时,可以用匿名对象来完成,这样写比较简化。

可以将匿名对象作为实际参数进行传递。

注:如果对一个对象进行多个成员调用,必须给这个对象起个名字。

封装(Encapsulation)

封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。

好处:将变化隔离,便于使用,提高重用性,提高安全性。

封装原则:将不需要对外提供的内容都隐藏起来,可通过private私有化

把属性都隐藏,提供公共方法对其访问。

构造函数

特点:

函数名与类名相同

不用定义返回值类型

不可以写return语句

每个类都有一个默认的构造函数Person(){},默认构造函数看不到,定义了就成自定义构造函数了,默认构造函数的权限随着类的变化而变化

多个构造函数式以重载的形式存在

若写了带有参数的构造函数即指定构造函数(Person(int x){}),一定要自定义Person(){} 这个原来被默认的构造函数,否则在很多时候会出错,比如new Person(); 这时候会初始化Person(int x){},而因对象没传入参数而编译出错;再比如存在继承关系的时候,自定义构造函数中存在super();会因定义了Person(int
x){}而没定义Person(){}导致“无法将类 Person中的构造器 Person应用到给定类型”错误

作用:给对象进行初始化(对象一建立,就会调用与之对应的构造函数)

构造函数和一般函数的执行时间

构造函数:对象一建立就运行,给对象初始化,一个对象建立,构造函数只执行一次。

一般函数:当被调用时才执行。可被对象调用多次。

什么时候定义构造函数?

当分析事物时,该事物本身存在一些特性或者行为,那么将这些内容定义在构造函数中

构造代码块

作用:给对象进行初始化

对象一建立就运行,而且优先于构造函数执行。

构造代码块和构造函数的区别

构造代码块是给所有对象进行统一初始化

构造函数是给对应的对象初始化

this关键字

this代表它所在函数所属对象的引用。哪个对象在调用this所在的函数,this就代表哪个对象

this的应用:本来函数中用到本类对象时,使用this关键字引用

this语句,用于构造函数之间互相调用 this(name); 构造函数之间调用只能用this。

this语句只能放在函数的第一行。原因是初始化的动作先执行,再执行赋值的初始化

注意:this语句调用得注意避免出现死循环
----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐