成员变量 | 局部变量 | |
类 | 类中方法外 | 方法内或者方法声明上 |
内存 | 堆内存 | 栈内存 |
生命周期 | 随着对象的存在而存在,随着对象的消失而消失 | 随着方法的调用而存在,随着方法的调用完毕而消失 |
默认值 | 有默认值 | 没有默认值,必须先定义,赋值,才能使用 |
匿名对象
没有名字的对象;是对象的一种简化表示形式(new 对象())
两种使用情况
对象调用方法仅仅一次的时候
作为实际参数传递
封装
隐藏对象的属性和实现细节,仅对外提供公共访问方式
优点 隐藏实现细节,提供公共的访问方式
提高了代码的复用性
提高安全性
原则
将不需要对外提供的内容都隐藏起来
把属性隐藏,提供公共方法对其访问
构造方法
给对象的数据进行初始化
格式: 方法名与类名相同;没有返回值类型,连void都没有;修饰符可为(pubic、protected、默认、private)
注意事项: 不提供构造方法,系统会给出默认的无参构造方法
提供构造方法,系统将不再提供默认的无参构造方法
构造方法可以重载
类的初始化过程
Demo d = new Demo();
1 加载Demo.class文件进内存
2 在栈内存为d开辟空间
3 在堆内存为Demo对象开辟空间
4 对Dmeo的成员变量进行默认初始化
5 对Demo的成员变量进行显示初始化
6 通过构造方法对成员变量进行赋值
7 初始化完毕,把对象地址赋值给d变量
变量什么时候定义为成员变量
如果这个变量是用来描述这个类的信息,该变量就应该定义为成员变量
变量定义的范围
越小越好,因为能及时的被回收
Static关键字
1 可以修饰成员变量和成员方法
2 随着类的加载而加载
3 优先于对象存在
4 被类的所有对象共享
5 可以通过类名调用
6 存在于方法区的静态区
注意事项
在静态方法中时没有this关键字的
静态方法只能访问静态的成员变量和静态的成员方法
静态变量 | 成员变量 | |
所属 | 属于类,也称为类变量,对象的共享数据 | 属于对象,也称为实例变量(对象变量),对象的特有数据 |
内存 | 方法区的静态区 | 堆 |
生命周期 | 随着类的加载而加载,随着类的消失而消失 | 随着对象的创建而存在,随着对象的消失而消失 |
调用 | 可以通过类名调用,也可以通过对象调用 | 只能通过对象名调用 |
public static void main(Sting[] args){}
public被JVM调用,访问权限足够大
static被JVM调用,不用创建对象,直接类名访问
void 被JVM调用,不需要给JVM返回值
main 一个通用的名称,不是关键字,但是被JVM识别
string[] args 以前用于接收键盘录入的数据
本类 | 同包 | 同包 | 不同包 | 不同包 | |
子类 | 其它类 | 子类 | 其它类 | ||
private | √ | ||||
默认 | √ | √ | √ | ||
protected | √ | √ | √ | √ | |
public | √ | √ | √ | √ | √ |