class A { public A(){ System.out.println("测试!!!!!!!!!!!"); } } class Demo19 extends A { { x=7;//代码块初始化 System.out.println("hello world!测试代码块的执行顺序!AAAAAAAAAAA"); } public int x=1;//这里不会初始化变量值 只会声明变量 public int y=2;//这里不会初始化变量值 只会声明变量 public Demo19(){ //super(); //相当于 x=7 //然后x=1; //y=2; //y=13; } public Demo19(int d_x,int d_y) { //super(); //x=7; //x=1; //y=2; //y=13; x=d_x; y=d_y; //super();//假如显示的调用 那么是不能放在这里初始化的 } //代码块的执行顺序是按照代码块的顺序执行的 //代码块的执行时间:在对象初始化的时候执行!!!!!!!!!!!!! { y=13;//代码块初始化 System.out.println("hello world!测试代码块执行的顺序!BBBBBBBBBBBB"); } //构造函数的代码块 public static void main(String[] args) { //这里初始化的时候就跟上面的初始化差不多 Demo19 demo=new Demo19(); System.out.println("测试代码块:x="+demo.x+" ,y="+demo.y); //这里的初始化相当于上面的那个操作 Demo19 demoOne=new Demo19(12,45); System.out.println("测试代码块:x="+demoOne.x+" ,y="+demoOne.y); System.out.println("其他的顺序是不变的!这个是比较重要的"); System.out.println("代码块的使用!"); } }
抽象类的初始化:
abstract class A { String name; String id; public abstract void test(); } abstract class B extends A { //子类也可以是抽象类,不实现父类的方法 } class C extends A { public void test(){ System.out.println("子类假如不是抽象类 那么必须实现父类的方法"); } } abstract class D1 { /* 抽象类中也是有构造函数的,只是这个只能子类初始化 */ D1(){ System.out.println("测试抽象类的构造函数!"); } static String name="什么是你"; } class D extends D1 { D(){ System.out.println("子类调用父类的构造函数"); } public void test(){ System.out.println(this.name); System.out.println("假如抽象类中没有抽象方法,那么继承也是没有问题的"); } } class Demo5 { public static void main(String[] args) { D d =new D(); d.test(); System.out.println("抽象类!!!!!"); System.out.println("类不支持多重继承!!!!!!!!!!!!!!!!"); } }