- 成员变量定义在类中,整个类都可以被访问
- 成员变量分类类成员变量和实例成员变量,实例变量存在于对象所在的堆内存中。
- 成员变量有初始化默认值。
- 成员变量的权限修饰符可以根据需要选择任意一个。
局部变量
- 局部变量值定义在局部范围内,如:方法内,代码块内等。
- 局部变量存在于栈内存中。
- 作用的范围结束,变量空间会自动释放。
- 局部变量没有默认初始化值,每次必须显式初始化
- 局部变量声明时不指定权限修饰符。
匿名对象
不定义对象的句柄,直接调用这个对象的方法,这样的对象叫做匿名对象。
如:new Person().showInfo();
经常将匿名对象作为实参传递给一个方法调用。
类的访问机制
1.在一个类中的访问机制:类中的方法可以直接访问类中的成员变量。(例外:static方法访问非static的成员变量,编译不通过。)
2.在不同类中的访问机制:先创建要访问类的对象,再用对象访问类中定义的成员。
面向对象思想“落地”法则之一
- 关注类的的设计,即设计类的成员:属性、方法。
- 类的实例化,即创建类的对象。
- 通过“对象.属性”、“对象.方法” 执行。
方法的重载
在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。
重载的特点:
与返回值类型无关,只看参数列表,且参数列表必须不同。(参数个数或参数类型),调用时,根据方法参数列表的不同来区别。
方法的可变个数参数:
用数组的方式来传递可变个数的参数 (String[] args)
用Java特有的...方式来传递可变个数的参数,这种参数在使用时与数组的使用方式相同。(String ... args)
注意:日过一个方法有多个的形参,可变的形参(...这种的参数)一定要放在所有的参数最后。
printInfo(String s,int d,String ... args)
Java的实参值如何传入方法?
Java里方法的参数传递方式只有一种,值传递。
方法的参数传递
- 如果方法的形参是基本数据类型,那么实参(实际的数据)向形参传递参数时,就是直接传递值,把实参的值复制给形参
- 如果方法的形参是对象,那么实参(实际的对象),向形参传递参数的时候,也是把值给形参,这个值是实参在栈内存中的值,也就是引用对象在堆内存中的地址
基本数据类型都是保存在栈内存中,引用对象在栈内存中保存的是也引用对象的地址,那么方法的参数传递是传递值(是变量在栈内存中的值)。
包(package)
关键字—package,其格式为:package 顶层包名.子包名
等同于文件夹的概念,包和文件夹一样可以有多级,也就是包下可以有包和文件,多级的包使用的.分隔,例如
com下的cn的test包,写法就是com.cn.test
信息的隐藏和封装
Java中通过数据声明为私有的(private),再提供公共(public)方法:getXxx()和setXxx()实现对属性的操作,以实现下述目的:
- 隐藏一个类中不需要对外提供的实现细节。
- 使用者只能通过实现定制好的方法来访问数据,可以方便的加入控制逻辑,限制对属性的不合理操作。
- 便于修改,增强代码的可维护性。