注册 登录
编程论坛 JAVA论坛

为什么子类继承上一个子类情况下在下面这个子类里面无法添加静态初始块

Q1992 发布于 2016-12-10 22:36, 1630 次点击
package lee;

class Root {
    static{
        System.out.println("Root静态初始模块");
    }
    {
        System.out.println("Root普通初始模块");
        
    }
    public Root()
    {
        System.out.println("Roor的无参数构造器");
    }
    class Mid  extends Root
    {
    }
   
   
    static{
        System .out.println("Mid的静态初始");
    }
   
    {
        System.out.println("Mid的静态初始");
    }
    public void Mid()
    {
        System.out.println("Min无参数构造器");
    }
   
    public  void Mid(String msg)
    {
        
        System.out.println("vg");
    }
    class gsd  extends Mid
    {
        static{
            
            System.out.println("gsd静态初始");
        }
    }
    {
        System.out.println("Leaf普通初始模块");
    }
    public class Test
    {
        
    }
    public static void main(String[] args)
    {
    new Leaf();
    new Leaf();

    }
   

    }
只有本站会员才能查看附件,请 登录


3 回复
#2
xu27384617462016-12-13 19:01
这代码。。。。
#3
z5144028622016-12-14 09:58
感觉你连继承的真正思想和正确用法都没有搞清楚。
你那里面的类不只是继承Root,还是Root的内部类,内部类是可以享用外部类的所有属性和方法。
继承的作用之一就是可以复用代码。而且父类和子类都是可以单独拿来用的。你这样写,别的类只能通过Root.Mid = new Root.Mid()来创建Mid对象。
你这用内部类继承外部类,完全是多此一举。

再来回答你另外个问题,为什么子类继承上一个子类情况下在下面这个子类里面无法添加静态初始块?
首先你问题就错了,不是说继承了外部类不能用,而是不管继承不继承,在没有加static关键字的内部类不管是方法还是属性都不能加static,也不能用静态初始块
例子:static class Mid extends Root{}
#4
GrayJerry2016-12-14 15:41
3楼正解
1