java创建对象的几种方式:
(1) 用new语句创建对象,这是最常见的创建对象的方法。
(2) 运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。
(3) 调用对象的clone()方法。
(4) 运用反序列化手段,调用java.io.ObjectInputStream对象的 readObject()方法。
下面测试代码块,静态代码块,构造器的初始化顺序
public class TestExtends {
public static void main(String[] args) {A a = new A(5);
/*输出结果:
* B constructor
A.draw(), radius = 0
A constructor
A.draw(), radius = 5
* */
Son s = new Son();
/*输出结果:
* parent中static初始化块
son中的static初始化块
parent中的初始化块
parent构造方法
son中的初始化块
son构造方法
* */
}
}
class B {
private int radius = 10;
public void draw() {
System.out.println("B.draw(), radius = " + radius);
}
public B() {
System.out.println("B constructor");
draw();
}
}
class A extends B {
private int radius = 1;
public void draw() {
System.out.println("A.draw(), radius = " + radius);
}
public A(int radius) {
this.radius = radius;
System.out.println("A constructor");
System.out.println("A.draw(), radius = " + radius);
}
}
class Parent{
{
System.out.println("parent中的初始化块");
}
static{
System.out.println("parent中static初始化块");
}
public Parent(){
System.out.println("parent构造方法");
}
}
class Son extends Parent{
{
System.out.println("son中的初始化块");
}
static{
System.out.println("son中的static初始化块");
}
public Son(){
System.out.println("son构造方法");
}
}