手机类练习与一个对象的内存图
phone
/* 定义一个类,用来模拟手机事务 属性:品牌。价格。颜色 行为:打电话,发短信 对应到类当中 成员变量(属性) String brand// 品牌 double price//价格 String color/颜色 成员方法(行为) public void call(String who){}//打电话 public void sendMessage(){} //群发短信 */ public class phone { //成员变量 String brand; double price; String color; public void call(String who){ System.out.println("给"+who+"打电话"); } public void sendMessage(){ System.out.println("群发短信"); } }
PhoneDemo01
public class PhoneDemo01 { public static void main(String[] args) { //根据phone类,创建一个名为one的对象 //格式:;类名称 对象名 =new 类名称() phone phone = new phone(); System.out.println(phone.brand); System.out.println(phone.color); System.out.println(phone.price); System.out.println("******************"); phone.brand = "苹果"; phone.color = "土豪金"; phone.price =1.3; System.out.println(phone.brand); System.out.println(phone.color); System.out.println(phone.price); System.out.println("******************"); phone.call("秦始皇"); phone.sendMessage(); } }
对象内存图
通过上图,我们可以理解,在栈内存中运行的方法,遵循"先进后出,后进先出"的原则。变量p指向堆内存中
的空间,寻找方法信息,去执行该方法。
但是,这里依然有问题存在。创建多个对象时,如果每个对象内部都保存一份方法信息,这就非常浪费内存
了,因为所有对象的方法信息都是一样的。那么如何解决这个问题呢?请看如下图解。