黑马程序员技术交流社区
标题:
多态中,静态方法和非静态方法的加载问题
[打印本页]
作者:
丁朋
时间:
2012-7-16 10:21
标题:
多态中,静态方法和非静态方法的加载问题
多态中,静态方法和非静态方法的加载问题
class fu
{
public method1(){}
public method2(){}
public static method3(){}
}
这三个方法的加载顺序是按照从上往下写下来的顺序还是static的先加载。还有public static 可以写成 static public吗?
作者:
全海波
时间:
2012-7-16 10:32
不能static public 这样写?绝对不行
未命名.jpg
(479.24 KB, 下载次数: 50)
下载附件
加载步骤
2012-7-16 10:30 上传
作者:
黄昆
时间:
2012-7-16 10:33
class fu
{
public method1(){}
public method2(){}
public static method3(){}
}
首先楼主的代码书写就有问题。
一般方法必须要有返回值类型,没有返回值类型时,要用void。
只有构造函数才没有返回值类型也不可以写void而构造函数的名称要和类的名称一致。
静态成员随着类的加载而加载到方法区中,至于一般函数,只有在调用到该函数时,该函数才加载。
这些在基础视频上毕老师都讲的很清楚,希望楼主认真看视频并做好笔记。
作者:
程潇
时间:
2012-7-16 10:35
本帖最后由 jeffreyno1 于 2012-7-16 10:51 编辑
这个问题你提到了四个概念:多态、静态方法、非静态方法、加载顺序
可是题目中没有体现多态,只写了个父类。还有加载的问题,示例代码中只描述了一个类,没有程序入口,没有类的引用和对象的创建,也就不存在加载的问题,更谈不上加载顺序。
作者:
康大玮
时间:
2012-7-16 10:50
1,静态代码块、构造代码块和构造函数的区别
静态代码块:用于给类初始化,类加载时就会被加载执行,只加载一次。
构造代码块:用于给对象初始化的。只要建立对象该部分就会被执行,且优先于构造函数。
构造函数: 给对应对象初始化的,建立对象时,选择相应的构造函数初始化对象。
创建对象时,三者被加载执行顺序:静态代码块--->构造代码块--->构造函数
作者:
陆鹏
时间:
2012-7-16 11:49
本帖最后由 陆鹏 于 2012-7-16 11:52 编辑
内存中的执行顺序
如 Person p = new Person();
类加载------>静态代码块------>静态成员------>开辟空间,分配地址(
还未赋给变量
)----->特有成员初始化(如赋值)------>构造代码块----->构造函数----->将地址赋给类类型变量。
补充一下,子父类中优先加载父类。static public 格式不对。
希望楼主自己按照这个方式多想想,自己在草稿上划出内存分别有几个区域,哪个区域优先,区域里的哪些成员优先,自然就明白了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2