黑马程序员技术交流社区

标题: 静态代码块为什么不能被继承? [打印本页]

作者: 陈柏伊    时间: 2013-3-28 13:50
标题: 静态代码块为什么不能被继承?
本帖最后由 陈柏伊 于 2013-4-7 16:57 编辑

静态代码块为什么不能被继承?

作者: 魏福伟    时间: 2013-3-28 14:03
静态代码块,在类加载的时候,只执行一次,进行一些准备工作,
作者: 葛晓红    时间: 2013-3-28 14:41
静态代码块是类中的一段代码,随着类的加载而加载,只执行一次,优先于主函数,用来给类进行初始化的。继承是体现类与类之间存在所属关系的一种方式。可以看看视频在理解一下
作者: 袁梦希    时间: 2013-3-28 15:00
当编译时,.class字节码文件就加载到了内存,主函数所属的类先加载到内存,所以静态代码块先被执行,当主函数中创建person对象时

这时person类的字节码文件也加载到内存中,然后初始化Person类。

(特点:随着类的加载而执行,只执行一次,并优先于主函数。
用于给类进行初始化的。)

作者: 王杰123    时间: 2013-3-28 15:44
你好 楼主

对象的初始化顺序:首先执行父类静态的内容,父类静态的内容执行完毕后,接着去执行子类的静态的内容,当子类的静态内容执行完毕之后,再去看父类有没有非静态代码块,如果有就执行父类的非静态代码块,父类的非静态代码块执行完毕,接着执行父类的构造方法;父类的构造方法执行完毕之后,它接着去看子类有没有非静态代码块,如果有就执行子类的非静态代码块。子类的非静态代码块执行完毕再去执行子类的构造方法。总之一句话,静态代码块内容先执行,接着执行父类非静态代码块和构造方法,然后执行子类非静态代码块和构造方法。

注意:子类的构造方法,不管这个构造方法带不带参数,默认的它都会先去寻找父类的不带参数的构造方法。如果父类没有不带参数的构造方法,那么子类必须用supper关键子来调用父类带参数的构造方法,否则编译不能通过。
作者: 黄杨    时间: 2013-3-28 15:53
继承是一个对象直接使用另一个对象的属性和方法。

静态块最终是写到类或接口初始化方法里面的,不能被继承,静态方法才可以被继承


作者: 陈柏伊    时间: 2013-4-1 20:10
王杰123 发表于 2013-3-28 15:44
你好 楼主

对象的初始化顺序:首先执行父类静态的内容,父类静态的内容执行完毕后,接着去执行子类的静态的 ...

你好,谢谢你的回答,很全面,受教了
作者: 聂斌    时间: 2013-4-2 23:59
静态代码块。静态的随着类的加载而加载,静态代码块他是没名字的,他是随着类的加载完这静态代码块里面的代码紧跟着就执行完了

特点:随着类的加载而执行,只执行一次,并优先于主函数。主函数有名字,主函数是被调用才执行,静态代码块不需要被调用,直接执行因为他没有名字,随着类的加载就执行了
用于给类进行初始化的。这个用的少,一般是对象初始化多


代码:

class StaticCode
{

        StaticCode()
        {
                System.out.println("b");
        }

        static    静态代码块是给类初始化的
        {
                System.out.println("a");
        }


        {       构造代码块是给对象初始化的
                System.out.println("c");  
        }

        StaticCode(int x)        构造函数是给对应对象初始化的
        {
                System.out.println("d");
        }
        public static void show()
        {
                System.out.println("show run");
        }
}


作者: 黄玉昆    时间: 2013-4-5 08:18
如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢
作者: 陈柏伊    时间: 2013-4-6 21:50
黄玉昆 发表于 2013-4-5 08:18
如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢

怎么改成以解决呀?
作者: 黄玉昆    时间: 2013-4-6 22:02
陈柏伊 发表于 2013-4-6 21:50
怎么改成以解决呀?

http://bbs.itheima.com/thread-42978-1-1.html
请看看这个吧




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2