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

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 @   zj勇敢飞,xx永相随  阅读(45)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示