封装
封装的原因:避免成员变量被直接访问。根本上是为了防止类中创建出无效参数。
封装的方法:将所有成员变量前加上修饰符 private
set和get方法
方法产生的原因:封装限制了访问,因而需要通过内部方法访问。
需要注意的问题:
1.set方法一般写成: this.xx = xx; xx为传入的参数,同时也是类中的变量名
2.get方法一般写成:return this.xx; 一行代码足矣。
原因:不加this时,编译器会自动匹配最近的该变量名,加this.表明该变量名应是该对象的属性
变量和方法的访问权限
三种访问权限修饰符:
public 任何位置,任何对象都可访问
protected 同包对象,或不同包但子类对象可访问
private 只有同类对象可访问,简言之:只能被类中的方法访问,外面访问不了
默认:default:不是可使用的关键字,可以被包中任何对象访问
构造函数
略
toString方法
作用:将类对象转化成string,一般用于输出类对象的一些属性信息
注意:toString是Object类中的放法,如果要输出自定义类中的属性,一般要重写。
流畅接口
定义:返回类型为对象本身的set方法
public TestThird setName(String name) { this.name = name; return this;}
作用:连续赋值,代码可读性高,代码简洁 ,调用方法如下:
classA.setB(xx).setC(xx).setD(xx).....
创建对象的流程
对于 Object object = new Object();的创建流程的分析
1.声明一个Objcet类型的引用变量object
2.在堆中new一个Object类对象实例,包含该类的所有变量。
3.=将object指向堆中的该Object对象实例。
堆、栈、垃圾回收机制
堆,栈,程序执行流程中内存管理机制:
关键词: 对象和对象变量存储在堆中,方法和局部变量存储在栈中。
垃圾回收机制:
每个堆中的对象实例都有一个引用计数器(隐藏),保存指向自己的引用变量的个数。当引用计数为0时(让引用变量=null即可主动达成),该对象即成为迷失在堆中(lost in heap),成为待回收的垃圾。java虚拟机有默认的内存空闲率阈值,当达到这个阈值后,会执行System.gc()方法清理无引用对象,完成垃圾回收。
特别注意的是,虽然java没有析构函数,但其也具有finalize()方法。该方法能在被垃圾回收之前调用一次,但是不建议使用。