首页 > 代码库 > Java面试常考到的东东

Java面试常考到的东东

1、super与this的区别?


    super是我们在子类中想使用被子类隐藏的父类的成员变量或方法时,可以使用的关键字。

    this出现在类的实例方法中,代表使用该方法的当前对象。也可以出现在类的构造方法中,代表使用该构造方法所创建的对象。

    this()代表当前类对象,super()代表父类对象。

    表示在子类访问父类的成员和行为,必须受到类继承规则的约束。


    在子类的构造函数中,如果第一行没有写super(),编译器会自动插入。但是如果父类没有不带参数的构造函数,或这个构造函数被私有化了,此时必须加入对父类的实例化构造。而this就没有这个要求,因为其本身就进行了实例化构造。

    在方法中super和this的使用就差不多了,只不过super要考虑是否访问其父类的资源。



2、继承的时类的执行顺序问题:

请看源码:

A.父类

package test;

public class FatherClass{

    public FatherClass(){

        System.out.println("FatherClass Create");

    }

}

B.子类

package test;

import test.FatherClass;

public class ChildClass extends FatherClass{

    public ChildClass(){

        System.out.println("ChildClass Create");

    }

    public static void main(String[] args){

        FatherClass fc = new FatherClass();

        ChildClass cc = new ChildClass();

    }

}

    请写出B中子类执行后的输出结果。

    程序执行首先找的是main方法,而其第一句执行的结果是:FatherClass Create

由于子类的构造方法中的第一行隐藏着super(),所以执行第二句时,首先还是调用父类的构造方法,所以又输出:FatherClass Create,最后才调用子类自己的构造方法,输出:ChildClass Create

    所以答案为:

                FatherClass Create

                FatherClass Create

                ChildClass Create


本文出自 “Java面试” 博客,请务必保留此出处http://funyou.blog.51cto.com/8580577/1539160