• 面向对象执行过程内存分析


    【面向对象内存分析】


     

    面向对象执行内存分析

    【博客】高瑞林

    【博客地址】http://www.cnblogs.com/grl214

      

    面向对象

      以类的方式组织代码,以对象的方式封装数据。

         封装性:

        封装是一种信息隐蔽技术,它体现于类的说明,使数据更安全.是对象的重要特性。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,     使得用户只能见到对象的外特性(对象能接受哪些消息,具有那些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。封装     的目的在于把对象的设计者和对象者的使用分开,使用者不必知晓行为实现的细节,只须用设计者提供的消息来访问该对象。

        继承性:

        继承性是子类自动共享父类之间数据和方法的机制。它由类的派生功能体现。一个类直接继承其它类的全部描述,同时可修改和扩充。

        继承具有传递性和单根性.如果B类继承了A类,而C类又继承了B类,则可以说,C类在继承了B类的同时,也继承了A类,C类中的对象,可以实现A类中的方法.一个类,只能够同时     继承另外一个类,而不能同时继承多个类,通常所说的多继承是指一个类在继承其父类的同时,实现其他接口.类的对象是各自封闭的,如果没继承性机制,则类对象中数据、     方法就会出现大量重复。继承支持系统的可重用性,从而达到减少代码量的作用,而且还促进系统的可扩充性。

        多态性:

        对象根据所接收的消息而做出动作。同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。利用多态性用户可发送一个通用的信息,而将所有的实现     细节都留给接受消息的对象自行决定,如是,同一消息即可调用不同的方法。例如:Print消息被发送给一图或表时调用的打印方法与将同样的Print消息发送给一正文文件      而调用的打印方法会完全不同。多态性的实现受到继承性的支持,利用类继承的层次关系,把具有通用功能的协议存放在类层次中尽可能高的地方,而将实现这一功能的     不同 方法置于较低层次,这样,在这些低层次上生成的对象就能给通用消息以不同的响应。在OOPL中可通过在派生类中重定义基类函数(定义为重载函数或虚函数)来       实现多态性。

     

     

    内存分析(一)

       创建一个student类

    public class Student {
        // static data
        String name;
        int id;
        String sex;
        String address;
        int age;
        Computer computer;
    
        // dynamic behavior
        public void say() {
            System.out.println(name + age + "say hello");
        }
    
        public void study(String sname) {
            System.out.println(name + " and " + sname + "studying");
        }
    
        public static void main(String[] args) {
            /*
             * Through class Loader upload this Student class ,In the 
             * method section is the Student class information.
             */
            Student s1 = new Student();
            s1.name = "Mr gao";
            s1.study("Mr wang");
    
            Student s2 = new Student();
            s2.age = 10;
            s2.name = "Mrs li";
            s2.say();
    
        }
    
    }
    内存结构图

       

              

    内存分析(二)
    public class Computer {
        //static data
        String brand;
        int cupSpeed;
        //dynamic method
        public void run(){
            
        }
    public class Test {
        public static void main(String[] args) {
            Student s = new Student();
            s.name = "Mr gao";
            s.age = 10;
            Computer p = new Computer();
            p.brand = "ASUS";
            p.cupSpeed = 100;
            s.computer = p;
            System.out.println(s.computer.brand);
                
    
        }
    
    }
    内存结构图

     

                        ----------------------谢谢观看------------------------

  • 相关阅读:
    Java 中的 TreeSet
    自定义全局异常处理器(Java)
    GitHub Open Feign 使用总结
    搭建 Maven 仓库
    MySQL 的 SQL 笔记
    一道算法题:查找数组 arr 中第 k 小的奇数
    Java 的参数传递
    接口限流的几种算法
    Java 实现一个自定义分布式 Session
    函数反汇编
  • 原文地址:https://www.cnblogs.com/grl214/p/6289346.html
Copyright © 2020-2023  润新知