TA的每日心情 | 开心 2021-3-12 23:18 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
- class A {
- public int Avar;
- public A() {
- System.out.println("AAA");
- doSomething();
- }
- public void doSomething() {
- Avar = 1111;
- System.out.println("A.doSomething()");
- }
- }
- public class B extends A {
- public int Bvar = 2222;
- public B() {
- System.out.println("BBB");
- doSomething();
- System.out.println("Avar=" + Avar);
- }
- public void doSomething() {
- System.out.println("Bvar=" + Bvar);
- }
- public static void main(String[] args) {
- new B();
- }
- }
复制代码 讲解:
顺序是这样得,首先生成B就得先生成A(没有父,哪来子)
所以调用A的构造器,输出AAA,
然后调用方法dosomething,!!!
注意:A的该方法被B覆盖,
而你生成的是B的对象,
所以它调用B的方法,
由于BVAR目前没有给定值,
所以自动初始化为0,
然后生成B对象,
先初始化变量BVAR,
然后调用构造器输出BBB,
然后调用方法,
这时BVAR已初始化,
所以输出BVAR=2222,
而对象A中变量AVAR由于没有调用对象A的方法dosomething,
所以其值为0,则输出0
全部输出就如下:
AAA
Bvar=0
BBB
Bvar=2222
Avar=0
注意:初始化顺序,当继承时,先生成超类对象,生成对象时,先生成静态变量,然后是一般变量,然后调用构造器!当所以超类对象生成后,生成本对象,顺序一样! 当方法被覆盖时,调用目前对象的方法!这得注意。 下面这个题目你能选对答案吗?:- What will happen when you attempt to compile and run the following code?
- class Base
- {
- int i = 99;
- public void amethod()
- {
- System.out.println("Base.amethod()");
- }
-
- Base()
- {
- amethod();
- }
- }
- public class Derived extends Base
- {
- int i = -1;
-
- public static void main(String argv[])
- {
- Base b = new Derived();
- System.out.println(b.i);
- b.amethod();
- }
-
- public void amethod()
- {
- System.out.println("Derived.amethod()");
- }
- }
- A. Derived.amethod()
- -1
- Derived.amethod()
- B. Derived.amethod()
- 99
- Derived.amethod()
- C. 99
- Derived.amethod()
- D.
- Compile time error
复制代码
function TempSave(ElementID)
{
CommentsPersistDiv.setAttribute("CommentContent",document.getElementById(ElementID).value);
CommentsPersistDiv.save("CommentXMLStore");
}
function Restore(ElementID)
{
CommentsPersistDiv.load("CommentXMLStore");
document.getElementById(ElementID).value=CommentsPersistDiv.getAttribute("CommentContent");
} |
|