JAVA基础复习六-面向对象

来源:互联网 发布:mac邮件图片无法显示 编辑:程序博客网 时间:2024/06/05 20:58

一、面向对象特征

封装(encapsulation)继承(inheritance)多态(polymorphism)一个对象的内存图:

这里写图片描述

如图所示,1.通过javac.exe将.java文件编译为.class字节码文件;2.java.exe运行.class字节码文件;3.JVM将.class字节码文件放入内存中的方法区;4.主方法压栈开始执行,先将Car.class文件也加载进内存方法区;5.先在堆内存中分配空间,创建new Car()的对象,并在栈内存中给对象的引用附上对象的地址值。6.引用变量给对象的成员方法赋值,调用run()方法,run()方法进栈,执行,出栈。主方法执行完毕,出栈。如果没有任何引用指向一个对象,那么该对象就变成了垃圾,java中有完善的垃圾回收机制,不定时的清理垃圾。而只要该对象一直被某个引用持有着,那么就不那么容易被回收。主要是看该引用是强引用、弱引用还是什么的。

二、成员变量和局部变量的区别

成员变量和局部变量的区别A:在类中的位置不同    成员变量:在类中方法外    局部变量:在方法定义中或者方法声明上B:在内存中的位置不同    成员变量:在堆内存(成员变量属于对象,对象进堆内存)    局部变量:在栈内存(局部变量属于方法,方法进栈内存)C:生命周期不同    成员变量:随着对象的创建而存在,随着对象的消失而消失    局部变量:随着方法的调用而存在,随着方法的调用完毕而消失D:初始化值不同    成员变量:有默认初始化值    局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。成员变量如果是基本数据类型,默认初始化值就是相应的:byte、short、int、long为0;float、double为0.0;char为‘\u0000’转义Unicode编码的16进制的0;boolean为false;如果是引用数据类型,默认初始化值就是null;引用数据类型包括:数组、类、接口、枚举;String.class是类,所以默认初始化值也是null。

三、匿名对象

匿名对象应用场景调用方法,仅仅只调用一次的时候。好处:节省代码 注意:调用多次的时候,不适合。匿名对象调用完毕就是垃圾。可以被垃圾回收器回收。

四、封装

A:封装概述是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。B:封装的好处隐藏实现细节,提供公共的访问方式提高了代码的复用性提高安全性。C:封装原则将不需要对外提供的内容都隐藏起来。即外部无法调用类内部的操作即为封装。private关键字与封装:封装和private的应用:*A:把成员变量或成员方法用private修饰*B:把成员变量提供对应的getXxx()和setXxx()方法,private修饰的成员方法无法被外部访问。*private仅仅是封装的一种体现形式,不能说封装就是private,因为默认修饰符修饰的成员变量和方法外部也无法使用。
原创粉丝点击