对象调用成员的过程

Person p1=new Person("张三",20);
该句话都做了什么事情?
1.因为new用到了person.class 所以会先找到Person.class文件并加载到内存中。
2.执行该类中的static代码块,如果有的话,给Person.class类进行初始化。
3.在堆内存中开辟空间,分配内存地址。
4.在堆内存中建立对象的特有属性。并进行默认初始化
5.对属性进行显示初始化
6.对对象进行构造代码块初始化
7.对对象进行构造函数初始化

class Person{
    private String name;
    private int age;
    private static String country="cn";
    Person(String name,int age){
        this.name=name;
        this.age=age;
    }
    {
        System.out.println(name+"..."+age);
    }
    public void setName(String name){
        this.name=name;
    }
    public void speak(){
        System.out.println(this.name+"..."+this.age);
    }
    public static void showCountry(){
        System.out.println("country=" + country);
    }
}
class PersonDemo{
    public static void main(String[] args){
        Person p1=new Person("张三",20);
        p1.speak();
        p1.setName("李四");
        p1.speak();
    }
}

  

时间: 2024-08-05 01:49:40

对象调用成员的过程的相关文章

javascrit中“字符串为什么可以调用成员”

<script> var title = "this is title"; console.log(title.substr(0,5));   //字符串为什么可以调用成员(惯例是对象才能调用成员) //答:表面是字符串调用成员,其实在浏览器javascript解释引擎内部要做具体处理 引擎根据"字符串"生成一个"临时对象",是临时对象调用成员并返回结果 之后该"临时对象"被销毁 </script>

C++成员不通过对象调用的直接调用写法

C++成员不通过对象调用(.或->方式)的另类(C式)调用写法 #include <iostream> using namespace std; /* 我们知道,成员函数和普通函数最大的区别就是成员函数包含一个隐藏的参数this指针,用来表明成员函 数当前作用在那一个对象实例上. 根据调用约定(Calling Convention)的不同,成员函数实现this指针的方式也不同. 1. 如果使用__thiscall调用约定,那么this指针保存在寄存器ECX中,VC编译器缺省情况下就是这样

C++调用空指针对象的成员函数——静态绑定与动态绑定

最近代码中看到调用空指针对象的成员函数的写法,联想起上次碰到的问题: C++类的成员函数存储方式(是否属于类的对象) 两者的本质是一样的,上次只是简单地讨论了下,这次从编译器的角度,来谈一谈这个知识点. 一个简单的例子: class MyClass { public: int i; void hello() { printf("hello\n"); } void print() { printf("%d\n", i); } }; void main() { MyCl

C++的类、对象与成员

C++的类.对象与成员 1.声明一个类 类是用户自定义的类型,如果程序中要用到类,必须先声明定义. 类声明的语法形式如下: class 类名称       {       public:                   公有成员(外部接口)       protected:                   保护型成员       private:                   私有成员       } Class为关键字, 声明一个类时要用到它 . 当然,这里的public.pro

对象初始化的完整过程(C#)

1.静态构造函数 在引入本文的主题之前,我们先来铺垫一下吧,看看静态构造函数的概念及用途. C#中允许创建无参数构造函数,该函数仅执行一次.它一般被用来初始化静态字段.CLR不能保证在某个特定时刻执行静态构造函数,同时也不保证不同类的静态构造函数按照什么顺序执行,但保证它仅执行一次,即在应用程序创建该类的第一个实例或访问该类的任何静态成员之前. 注意,静态构造函数不允许有访问修饰符,且不接受任何参数,这是因为其他代码没有权利调用它,它的调用执行总是被CLR接管的!另外,一个类只能有一个静态构造函

类和对象:成员属性、成员方法 — 学习笔记3

类成员  类成员的访问控制PHP5中对类成员属性或成员方法的访问控制,是通过在其前面添加关键字 public(公有).protected(保护)或 private(私有)来实现的,如果没有设置这些关键字,则该成员方法被默认设置为 public. 类的访问控制权限具体应用规则如下:·由 public 所定义的类成员可以在任何地方被访问.·由 protected 所定义的类成员可以被其他所在类的子类和父类访问.·由 private 所定义的类成员只能被其所在类访问. 成员属性 在类中定义的变量称为成

Web API应用架构在Winform混合框架中的应用(3)--Winfrom界面调用WebAPI的过程分解

最近一直在整合WebAPI.Winform界面.手机短信.微信公众号.企业号等功能,希望把它构建成一个大的应用平台,把我所有的产品线完美连接起来,同时也在探索.攻克更多的技术问题,并抽空写写博客,把相应的技术心得和成果进行一定的介绍,留下开拓的印记.本文主要介绍混合框架整合Web API应用过程中,分析Winform界面如何一步步对Web API的调用处理的. 1.Winform界面的应用方向 在很多场合,分布式采用Web方式构建应用,不过相对Winform来说,Web界面的体验性没有那么好,界

java-动态绑定-调用方法的过程

先上代码 package com.ray.testobject; /** * 调用方法的过程 * * @author ray * @since 2015-05-01 * */ public class Person { public void say() { System.out.println("i am a person"); } public void say(int age) { System.out.println("i am " + age); } pu

空指针为什么能调用成员函数?

举个简单的例子,假如有如下的一段代码:class MyClass{public:    int i;    void hello()    {        printf("hello/n");    }    void print()    {        printf("%d/n", i);    }}; void main(){    MyClass* pmy = NULL;    pmy->hello(); } 看上面的这段代码,似乎很诡异. 用一个