面向对象--1

/**
对象名打印---》类名@地址值
1、从磁盘读取class文件,加载进方法区的class文件区
2、将class文件静态的属性和行为的加载进静态区
3、将class文件中私有的行为加载进方法区
4、在堆中持有方法的引用
5、读取class文件中的成员字段,并初始化
6、在堆中持有方法的引用
7、将这个地址赋值给对象名


对象使用:
1、打印对象名---》打印的是类名和地址值
2、给对象设置数据或是读对象的数据
格式:对象名.变量名
3、调用对象的方法:
格式:对象名.方法名(对应的参数);




栈桢---方法运行的内存
栈 ----存储栈桢
堆 ----存储new出来的----》数组 对象()
方法区-class文件区----》存储class文件
静态区--------》存储被static修饰的变量和方法
成员区--------》存储非static修饰的方法(成员方法)


dorm1.方法名()----》1、根据dorm1存储的地址值找到堆
 2、堆内有方法名,方法名指向一个地址值
 3、根据这个地址,找到方法区中的具体方法实现代码
 4、强方法实现压入栈



成员方法的实现代码,为什么不像成员字段一样存在堆中
1、成员字段随对象的不同而不同
2、成员方法都是一样的实现
3、处于节约资源的考虑,成员方法存储进成员区


*/
class OOP04
{
public static void main(String[] args)
{
//1、创建对象
Dorm dorm1 = new Dorm();
System.out.println("dorm1=" + dorm1);//直接打印dorm1的地址值
//2、向对象中设置参数
dorm1.elec = 100;//将dorm1 中的elec赋值为100
dorm1.water = true;//将dorm1  中的  water  赋值为true(即:水闸的状态是开启状态)
//3、获取到对象的数据
System.out.println("dorm1 的电表数 = "+dorm1.elec);//查看elec的值
System.out.println("dorm1 的水闸状态 =" + dorm1.water);//查看water的状态
//4、操作对象的行为
dorm1.changerWater();
System.out.println("dorm1 的水闸改变后的状态 =" + dorm1.water);


// 以同样的方式获取Dorm2的各种值或状态

Dorm dorm2 = new Dorm();
dorm2.elec = 1000;
System.out.println("dorm2 的电表数 = " + dorm2.elec);//1000
System.out.println("dorm1 的电表数 = " + dorm1.elec);//100


//一些经典的案例


//创建一个dorm3,
Dorm dorm3 = dorm2;//将dorm2的地址值给dorm3,
dorm3.elec = 0;
System.out.println("dorm2 的电表数 = " + dorm2.elec);//0 
System.out.println("dorm1 的电表数 = " + dorm1.elec);//100
System.out.println("dorm3 的电表数 = " + dorm3.elec);//0
//由运算结果可以看出,dorm2 和dorm3 的结果一样



//用成员改变共享的变量


System.out.println(dorm1.elecAll);//0
System.out.println(dorm1.waterAll);
dorm1.elecAll = 10000;
System.out.println("dorm2访问共享电表:" + dorm2.elecAll);//10000
System.out.println("dorm1访问共享电表:" + dorm1.elecAll);//10000
System.out.println("dorm3访问共享电表:" + dorm3.elecAll);//10000
}
}
/**
从现实中的宿舍,抽取计算机概念的类
共享的 私有的

数据: 共享的电表 自己的电表
  共享的水闸 私有的水闸


行为: 关闭共享的水闸   自己的水闸


*/
class Dorm
{
Dorm(){
}
//--------共享的数据----------
public static int elecAll;//共享的电表
public static boolean waterAll;//共享的水闸


//--------私有数据-----------
public int elec;
public boolean water;


//-------共享行为------
public static void changeWaterAll(){
waterAll = !waterAll;
}
//-----私有的行为
public void changeWater(){
System.out.println("水闸状态改变");
water = !water;
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值