创建对象内存分析
栈://声明数组
- 存放基本变量类型(会包含这个基本类型的具体数值)
- 引用对象的变量(会存放这个引用在堆里面的具体地址)
堆://创建数组、赋值
-
存放new的对象和数组 -
可以被所有的线程共享,不会存放别的对象引用
方法区:
- 可以被所有的线程共享
- 包含了所有的class和static变量
小结
-
类与对象 类是一个模板:抽象;对象是一个具体的实例 -
方法 定义、调用! -
对象的引用 引用类型:基本类型(8) 对象是通过引用来操作的:栈–>堆 -
属性:字段Field 成员变量 默认初始化: 数字:0 0.0;char:u0000;boolean:false;引用:null 修饰符 属性类型 属性名 = 属性值! -
对象的创建和使用 必须使用new 关键字创造对象,构造器 对象的属性 wang.name 对象的方法 wang.sleep() -
类 静态的属性 属性 动态的行为 方法
封装
“高内聚,低耦合:”
高内聚,类的内部数据操作细节自己完成,不允许外部干涉;低耦合,仅暴露少量的方法给外部使用。
**封装(数据的隐藏):**通常应禁止直接访问一个对象中数据的实际表示,而应该通过操作接口来访问,这称为信息隐藏。
属性私有,get/set
/*
- 提高程序的安全性,保护数据
- 隐藏代码的实现细节
- 统一接口
- 提高系统的可维护性
*/
package com.wang.oop.demo05;
public class Student {
private String name;
private int id;
private char sex;
private int age;
public String getName(){
return this.name;
}
public void setName(String name){
this.name=name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
if(age>130 || age<0){
this.age = 0;
}else {
this.age = age;
}
}
}
|