注册 登录
编程论坛 JAVA论坛

初始化块只在创建java对象是隐式执行,而且在执行构造器之前执行 谁给解释一下

小xiong 发布于 2016-04-29 17:47, 3094 次点击
//初始化块输出怎么在构造器之后啦

class Transport
{
    public  Transport(String speed)
    {
        System.out.println("交通工具时速: "+speed+"km/h");
    }
    public  Transport(String speed,double price)
    {
        this(speed);
        System.out.println("交通工具价格: "+price+"元");
    }

    public void loadNumber()
    {
        System.out.println("交通工具能载客啊");
    }
    public Transport()
    {

    }

}
class Bus extends Transport
{   
   
    {
        System.out.println("执行普通初始化块");//普通初始化块    java创建对象时会隐式执行初始化块,并且在构造器之前执行   这个之前是同类里面,在构造器前面执行
        
    }
    public  Bus(String speed)
    {
        System.out.println("汽车时速: "+speed+"km/h");
    }
    public  Bus(String speed,double price)//带参构造器
    {
        
        this(speed);
        System.out.println("汽车价格: "+price+"km/h");
    }

    public  Bus()
    {
        
    }
}

public class TransportTest
{
    public static void main(String[] args)
    {
        Bus bs=new Bus("100",99);//定义类变量,初始化
        bs.loadNumber();//子类调用父类实例方法
        
    }
}

/**输出

交通工具时速: 100km/h
交通工具价格: 80.0元
执行普通初始化块   
交通工具能载客啊
*/
2 回复
#2
小xiong2016-04-29 17:57
/***

第五章 本章练习 5定义交通工具,汽车,火车,飞机等类 注意继承关系 每个类提供3个构造器 并提取构造器通用代码,构建初始化块
*/
class Transport
{
    public  Transport(String speed)
    {
        System.out.println("交通工具时速: "+speed+"km/h");
    }
    public  Transport(String speed,double price)
    {
        this(speed);
        System.out.println("交通工具价格: "+price+"元");
    }

    public void loadNumber()
    {
        System.out.println("交通工具能载客啊");
    }
    public Transport()
    {

    }

}
class Bus extends Transport
{   
   
    {
        System.out.println("执行普通初始化块");//普通初始化块    java创建对象时会隐式执行初始化块,并且在构造器之前执行   这个之前是同类里面,在构造器前面执行
        
    }
    public  Bus(String speed)
    {
        System.out.println("汽车时速: "+speed+"km/h");
    }
    public  Bus(String speed,double price)//带参构造器
    {
        
        super(speed);//两者区别在这
        System.out.println("汽车价格: "+price+"km/h");
    }

    public  Bus()
    {
        
    }
}

public class TransportTest
{
    public static void main(String[] args)
    {
        Bus bs=new Bus("100",99);//定义类变量,初始化
        bs.loadNumber();//子类调用父类实例方法
        
    }
}

/**输出

交通工具时速: 100km/h
交通工具价格: 80.0元
执行普通初始化块   
交通工具能载客啊
*/
#3
小xiong2016-04-29 18:04
明白了  执行顺序是://父类初始化块-->父类构造器-->子类初始化块-->子类构造器
1