java构造方法
很与构造方法没有很深的,但看一篇介他的长长长长长长长长长长长长长长长长长长长长长长长长长长文章后感恍然大悟,故而把文章整理了一下收藏至此。长长长长长长长长长长长长长长长长长长长长长
长长长长长长长长长长长长长长长长长长长长长长长长的承机制使得子可以使用父的功能,即代,,
并且子也具有父的型。下面介在承系上的初始长长长长长长长长长长长长长长长长长长长长长长长长化的序。长长长长长
示例1:
class SuperClass
{
SuperClass()
{
System.out.println("SuperClass constructor");
}
}
public class SubClass extends SuperClass
{
SubClass()
{
System.out.println("SubClass constructor");
}
public static void main(String[] args) {
SubClass sub = new SubClass(); }
}
长长长长 出果:SuperClass
constructor
SubClass constructor
在子中只例化了一个子象。从出果上看,程长长长长长长长长长长长长长长长长长长长长长长长序并不是一始就运行自己的构造方法,而是先运行其父长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长的默构造方法。注意:程序自用其父的默构造
方法。
示例2:
class SuperClass
{
SuperClass(String str)
{
System.out.println("Super with a string.");
}
}
public class SubClass extends SuperClass
{
SubClass(String str)
{
System.out.println("Sub with a string.");
}
public static void main(String[] args) {
SubClass sub = new SubClass("sub"); }
}
在JDK下此程序不能成功。正如上例中的:程序长长长长长长长长长长长长长长长长长长长长在初始化子先要找其父的默构造方法,果没找到,长长长长长长长长长长长长长长长长长长长长长长长那自然不能通。长长长长长长长长长长
解决个有两个法:长长长长长长长长长长
1,在父中增加一个默构造方法。长长长长长长长长长长长长长
2,在子的构造方法中增加一条句:长长长长长长长长长长长长长长super(str); 且必在第一句。长长长长长长 两方法都能使此程序通,但就本程序来运长长长长长长长长长长长长长长长长长长长长长长长长行果却不相同。长长长长长长长
第1长长长长长方法的运行果是:
Sub with a string.
第2长长长长长 方法的运行果是:
Super with a string.
Sub with a string.
第2长长长长长长长长长长长长长长长长长长长长长长解决方法上是指定器不要找父的默构造方法,而是去找一个字符串参数的构造方法。长长长长长长长长长长长长长长长长长
下面介象的初始化序。长长长长长长长长长长长长
示例3:
class One
{
One(String str)
{
System.out.println(str); }
}
class Two
{
One one_1 = new One("one-1"); One one_2 = new One("one-2"); One one_3 = new One("one-3"); Two(String str)
{
System.out.println(str); }
}
public class Test
{
public static void main(String[] args)
{
System.out.println("Test main() start...");
Two two = new Two("two"); }
}
长长长长 出果:
Test main() start...
one-1
one-2
one-3
two
在main()方法中例化了一个长长长长长长Two长长长长长长长长长长长的象。但程序在初始化Two长长长长长长的象,并
非先用长长Two长的构造方法,而是先初始化Two长长长长长长长的成量。里Two长有3个成长长
量,它都是长长长One长长长长长长长长长长的象,所以要先用3次One长长长长长长长长长长长长长长的相的构造方法。最后在初始化
Two长长长长 的象。
示例4:
class One
{
One(String str)
{
System.out.println(str); }
}
class Two
{
One one_1 = new One("one-1"); One one_2 = new One("one-2"); static One one_3 = new One("one-3");
Two(String str)
{
System.out.println(str); }
}
public class Test
{
public static void main(String[] args)
{
System.out.println("Test main() start...");
Two two_1 = new Two("two-1"); System.out.println("------------"); Two two_2 = new Two("two-2"); }
}
长长长长 出果:
Test main() start...
one-3
one-1
one-2
two-1
------------
one-1
one-2
two-2
如果一个中有静象,那它会在非静象前初始化,长长长长长长长长长长长长长长长长长长长长长长长但只初始化一次。非静象次用都要初始化。长长长长长长长长长长长长 每 示例5:
class One
{
One(String str)
{
System.out.println(str); }
}
class Two
{
One one_1 = new One("one-1"); One one_2 = new One("one-2");
static One one_3 = new One("one-3"); Two(String str)
{
System.out.println(str);
}
3
}
public class Test
{
static Two two_3 = new Two("two-3"); public static void main(String[] args) {
System.out.println("Test main() start...");
Two two_1 = new Two("two-1"); System.out.println("------------"); Two two_2 = new Two("two-2"); }
}
长长长长 出果:
one-3
one-1
one-2
two-3
Test main() start...
one-1
one-2
two-1
------------
one-1
one-2
two-2
程序中主的静量会在长长长长长长长长main()方法行前初始化。果中只出了一次长长长长长长长长长长长长长长长长one-3,长
也明:如果一个中有静象,那它会在非静象前初始长长长长长长长长长长长长长长长长长长长长长长长长长长长长化,但只初始化一次。非静象次用都要初始化。长长长长长长长长长长长长 每
示例6:
class One
{
One(String str)
{
System.out.println(str);
}
}
class Two
{
static int i = 0;
One one_1 = new One("one-1"); static One one_2 = new One("one-2"); static One one_3 = new One("one-3"); Two(String str)
{
System.out.println(str);
}
}
public class Test
{
public static void main(String[] args)
{
System.out.println("Test main() start...");
System.out.println("Two.i = " Two.i); }
}
4
长长长长 出果:
Test main() start...
one-2
one-3
Two.i = 0
不第长长1次建象,中所有的静量要初始化,第长长长长长长长长长长长长长长长长长长长长长1次中的静长长长长长长长长
量,没有建象,,中所有的静量也要按照它在长长长长长长长长长长长长长长长长长长长长长长长长长中排列的序初始化。长长长长长长
上所述:长长长长长
在建象,象所在的所有数据成会首先行初长长长长长长长长长长长长长长长长长长长长长长长长始化,如果其中的成量有象,那它也会按照序行初始长长长长长长长长长长长长长长长长长长长长长化工作。在所有成初始化完成后,才用象所在的构造长长长长长长长长长长长长长长长长长长长长长方法建象。构造方法作用就是初始化。长长长长长长长长长长长长长长长长长
静象,量,在非静象前初始化。静象,量,长长长长长长长长长长长长长长长长长长长长长长长长长长只初始化一次,再次用就不初始化了,但非静象在长长长长长长长长长长长长长长次用都要初始每化。
程序中的主的静量会在长长长长长长长长main()方法行前行初始化工作。长长长长长长长长长长长 不第长长1次建象,中所有的静量要初始化,第长长长长长长长长长长长长长长长长长长长长长1次中的静长长长长长长长长
量,没有建象,,中所有的静量也要按照它在长长长长长长长长长长长长长长长长长长长长长长长长长中排列的序初始化。长长长长长长
初始化的序包括构造方法用的序如下:长长长长长长长长长长长长长长长长
1,主的静成首先初始化。长长长长长长长长长长长长
2,主的超的构造方法按照从最高到最低的序被长长长长长长长长长长长长长长长长长长长长长长用。
3,主的非静象,量,初始化。长长长长长长长长长长长长长长长
4,用主的构造方法。长长长长长长长长长长
在一个构造方法中只能用一次其它的构造方法,并且用长长长长长长长长长长长长长长长长构造方法的句必是第一条句。长长长长长长长长长长长