初识面向对象(成员变量和局部变量)
来源:互联网 发布:域名备案系统 编辑:程序博客网 时间:2024/05/17 09:37
概述:
面向对象,就是先把具有相同特征和功能的一类事物,抽出相同特性写成一个抽象的类,再创建这个类类型的对象,每个对象就是一个个体,拥有之前类中定义的属性和方法,不同的对象相同属性的值可以不同。
面向对象比较强调把一些功能封装到一个对象里,让这个对象去完成相应功能,但具体如何完成的细节不用去管。
比如,一辆黑色汽车跟一辆白色汽车,都是两个个体,但它们都是汽车,都有颜色这个属性,只是颜色不同而已。然后黑车跟白车都有“到加油站去加油”这个行为即方法, 需要加油时,调用 “黑车.去加油” 就好了,具体走哪条路去的加油站这个就不用管了,忽略了细节。
我们可以定义一个类,这个类封装了所有汽车的共同属性和行为,然后再创建一个这个类的实例,即对象。
代码分析:
class Car { //定义一个类,这个类封装了汽车这类事物的共性。 String color; int num; color = "red"; num = 4; void show() { System.out.print(color+" "+num); }}//创建一个Car对象,这个对象是上面那个类的个体。class Demo { public static void main(String[] args) { Car c = new Car(); //创建一个Car类型的对象,存储在堆内存 c.color = "black"; //把这个对象的color属性修改为“black” c.show; //使用这个对象的show()函数,函数中封装功能 }}
内存图解:
内存分析:
(1)创建对象时,先在堆内存中给对象分配一个内存空间,假如这个空间地址为0x0034。
(2)在这个空间中,创建一个对象,并定义两个成员变量,为 color 和 num (成员变量随着对象的建立而建立,存在于堆内存中,且有默认初始化值),color 初始化为 "red" ,num 初始化为 4。
(3)在栈内存中分配一个内存空间给局部变量 c,并把对象的内存地址赋给变量c,即把 0x0034 赋给 c。变量 c 即通过这个内存地址,指向了堆内存中的对象。
(4)c.color = "black"; 即通过c指向堆内存中的对象,把对象的 color 变量改为"black"。
(5)c.show(); 调用对象的 show() 方法。
匿名对象:
匿名对象是对象的简化形式,匿名对象的两种使用情况:
(1)当对对象的方法仅进行一次调用时。
(2)匿名对象可作为函数的实际参数进行传递。
第一种情况:
new Car().num = 5; //第一种情况,对对象仅进行一次调用。new Car().color = "black";//实际是创建了两个对象第二种情况:
class Test{} { public static void main(String[] args) { turn(new Car()); //turn()函数调用了Car类型对象,当调用完毕时,此对象不被调用则成为垃圾。 } public static void turn(Car c) { c.num = 3; c.color = "black"; }}
成员变量:
(1)成员变量定义在类中,在整个类中都可以被访问。
(2)成员变量随着对象的建立而建立,存在于对象所在的堆内存中。
(3)成员变量有默认初始化值。
局部变量:
(1)局部变量只定义在局部范围内,如:函数内、语句内。
(2)局部变量存在于栈内存中,且作用的范围结束,变量空间会自动释放。
(3)局部变量没有默认初始化值。
- 初识面向对象(成员变量和局部变量)
- 面向对象 成员变量和局部变量
- java面向对象(成员变量和局部变量)
- 面向对象(成员变量和局部变量)
- JAVA 面向对象 成员变量和局部变量
- 面向对象_成员变量和局部变量的区别
- 面向对象成员变量和局部变量的区别
- java面向对象-成员变量和局部变量
- 面向对象-成员变量、局部变量-封装
- java语言基础(21)——面向对象(成员变量和局部变量的区别)
- 7. 面向对象 -- 成员与局部变量和封装
- java 面向对象基础 类 成员变量和局部变量 成员方法
- java基础(五)面向对象/类/对象/形式参数/局部和成员变量
- (3) 面向对象一之类和对象、成员变量和局部变量、继承、封装、多态
- Java面向对象_成员变量、局部变量、全局变量
- Java重修之路(六)面向对象初识,类与对象,成员变量,局部变量,封装,构造函数,构造代码块,this关键字
- Java菜鸟学习笔记--面向对象篇(八):成员变量和局部变量
- 黑马程序员——面向对象_成员变量和局部变量的区别
- opencv排错总结
- 面试笔试之atoi函数
- C语言各种数据类型在系统中占的字节和取值范围
- postgres源码解析篇1
- xp系统下更改PL2303 USB转串口线的COM端口号的方法
- 初识面向对象(成员变量和局部变量)
- Windows动态库管理(一)
- java中的成员变量和方法
- hdu 1175连连看
- 黑马程序员——异常
- 转的C++库资料
- 【源码】java中图片和Base64互相转换源码
- Java类加载原理解析
- [leetcode]Binary Tree Maximum Path Sum