type
status
date
slug
summary
tags
category
icon
password
Property
一个
class
可以包含多个field
:直接把
field
用public
暴露给外部可能会破坏封装性:显然,直接操作
field
容易造成逻辑混乱。为了避免外部代码直接去访问field
,可以用private
修饰field
,拒绝外部访问:直接操作
private
修饰的field
: 报错java: name 在 Person 中是 private 访问控制
把
field
从public
改成private
,外部代码不能访问这些field
,那定义这些field
有什么用?怎么才能给它赋值?怎么才能读取它的值?需要使用方法(
method
)来让外部代码可以间接修改field
虽然外部代码不能直接修改
private
字段,但是,外部代码可以调用方法setName()
和setAge()
来间接修改private
字段。在方法内部,有机会检查参数对不对。比如,
setAge()
就会检查传入的参数,参数超出了范围,直接报错。这样,外部代码就没有任何机会把age
设置成不合理的值。private方法
有
public
方法,自然就有private
方法。和private
字段一样,private
方法不允许外部调用,那定义private
方法有什么用?定义
private
方法的理由是内部方法是可以调用private
方法的:calcAge()
是一个private
方法,外部代码无法调用,但是,内部方法getAge()
可以调用它this变量
在方法内部,可以使用一个隐含的变量
this
,它始终指向当前实例,因此通过this.field
就可以访问当前实例的字段。如果没有命名冲突,可以省略
this
:如果有局部变量和字段重名,那么局部变量优先级更高,就必须加上
this
:参数绑定
调用方把参数传递给实例方法时,调用时传递的值会按参数位置一一绑定。
基本类型参数的传递,是调用方值的复制。双方各自的后续修改,互不影响。
传递引用参数
看一个传递引用参数的例子:
引用类型参数的传递,调用方的变量,和接收方的参数变量,指向的是同一个对象。双方任意一方对这个对象的修改,都会影响对方(因为指向同一个对象嘛)。
再看一个例子:
第一个传递引用参数的例子是编辑,第二个是重新赋值。编辑是改变之前地址里面的值,而重新赋值是建立了新的内存