手机类练习与一个对象的内存图

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指向堆内存中
的空间,寻找方法信息,去执行该方法。
但是,这里依然有问题存在。创建多个对象时,如果每个对象内部都保存一份方法信息,这就非常浪费内存
了,因为所有对象的方法信息都是一样的。那么如何解决这个问题呢?请看如下图解。
posted @ 2022-06-30 09:14  zj勇敢飞,xx永相随  阅读(43)  评论(0编辑  收藏  举报