面向对象--对象内存图

对象内存图

1个对象的内存图

一个对象的基本初始化过程 

 

程序示例

/*
        手机:
            属性:品牌,颜色,价格
            行为:打电话,发短信,学习

        Phone:
            成员变量:brand,color,price
            成员方法:call,sendMessage,study
 */
public class Phone {
    //定义成员变量
    String brand;
    String color;
    int price;

    //定义成员方法
    //打电话
    public void call(String s) {
        System.out.println("给" + s + "打电话");
    }

    //发短信
    public void sendMessage() {
        System.out.println("群发短信");
    }

    //学习
    public void study() {
        System.out.println("学习");
    }
}


class PhoneDemo {
    public static void main(String[] args) {
        //通过手机类创建一个手机对象
        Phone p1 = new Phone();
        //访问成员变量
        System.out.println("品牌:" + p1.brand + ",颜色:" + p1.color + ",价格:" + p1.price);
        //手动给成员变量进行赋值操作
        p1.brand = "华为";
        p1.color = "黑色";
        p1.price = 2999;
        System.out.println("品牌:" + p1.brand + ",颜色:" + p1.color + ",价格:" + p1.price);

        //访问成员方法
        p1.call("杨老板");
        p1.sendMessage();
        p1.study();
    }
}

内存图解

 

2个对象的内存图

方法的共用 

程序示例

public class Phone2 {
    //定义成员变量
    String brand;
    String color;
    int price;

    //定义成员方法
    public void call(String s){
        System.out.println("给"+s+"打电话");
    }
    public void sendMessage(){
        System.out.println("发短信");
    }
    public void study(){
        System.out.println("学习");
    }
}

class PhoneDemo2{
    public static void main(String[] args) {
        //创建第一个手机对象
        Phone2 p1 = new Phone2();
        //给成员变量进行赋值
        p1.brand = "小米";
        p1.color = "陶瓷黑";
        p1.price = 4999;
        System.out.println(p1.brand+"--"+p1.color+"--"+p1.price);
        //访问成员方法
        p1.call("朱佳乐");
        p1.sendMessage();
        p1.study();

        //创建第二个手机对象
        Phone2 p2 = new Phone2();
        p2.brand = "苹果";
        p2.color = "黑色";
        p2.price = 14000;
        System.out.println(p2.brand+"--"+p2.color+"--"+p2.price);
        //访问成员方法
        p2.call("杨旭");
        p2.sendMessage();
        p2.study();

    }
}

 

内存图解

 

 

2个对象的内存图

将一个对象赋值给另一个对象

程序示例

public class Phone3 {
    //定义成员变量
    String brand;
    String color;
    int price;

    //定义成员方法
    public void call(String s) {
        System.out.println("给" + s + "打电话");
    }

    public void sendMessage() {
        System.out.println("发短信");
    }

    public void study() {
        System.out.println("学习");
    }
}

class PhoneDemo3 {
    public static void main(String[] args) {
        /*
                创建两个手机对象 p1 p2,将p1 赋值给p2
         */
        //创建第一个手机对象
        Phone3 p1 = new Phone3();
        //给成员变量进行赋值
        p1.brand = "诺基亚";
        p1.color = "白色";
        p1.price = 299;
        System.out.println(p1.brand + "--" + p1.color + "--" + p1.price);
        p1.call("贝贝");
        p1.sendMessage();
        p1.study();

        //创建第二个手机,并且将p1赋值给p2,然后修改p2的成员变量值
        Phone3 p2 = p1;
        p2.price = 3999;
        System.out.println(p1.price);
        System.out.println(p2.price);
    }
}

 

内存图解

 

 

posted @ 2021-12-03 23:18  赤兔胭脂小吕布  阅读(31)  评论(0编辑  收藏  举报