码迷,mamicode.com
首页 > 编程语言 > 详细

java面试题002

时间:2018-05-24 11:45:49      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:解释   判断   集成   静态成员   stat   函数名   rgs   string   局部内部类   

1、判断下列代码的运行情况

public class TestExtends {
    public static void main(String[] args) {
        Father obj = new Son();
        System.out.println(obj.getEle());
    }
}

class Father{
    public int getEle(){
        return 1;
    }
}
class Son extends Father{
    public float getEle(){
        return 2f;
    }
}

答案:编译出错。原因是函数不能以返回值来区分,虽然父类与子类中的函数有着不同的返回值,但是它们有着相同的函数名,因此编译器无法区分。

2、抽象方法权限标识只能由public or protected修饰【注:可以不进行权限修饰-为default】。

3、接口中的方法只能由public,abstract修饰。

4、内部类都有哪些,它们的特性分别是什么?

内部类分为四种:静态内部类、成员内部类、局部内部类和匿名内部类。

①静态内部类被static修饰,可以不依赖外部实例而被实例化,不能和外部类有相同的名字,不能访问外部类的非静态成员。

②成员内部类可以自由的引用外部成员变量和方法(包括私有)

③局部内部类不能被public等权限修饰符及static修饰

④匿名内部类不能使用class、extends、implements,没有构造函数,必须继承类或者实现接口,由此只能创建一个匿名内部类实例。另外局部内部类约束同样适用匿名内部类。

5、如何获取父类的类名?

答:使用getClass().getSuperclass().getName()。

:为什么不能使用super.getClass().getName(),解释如下:

getClass()方法在Object类中被定义为final和native,子类不能覆盖该方法。所以this.getClass()和super.getClass()都是调用了Object的getClass(),而Object的getClass的释义是返回Object的正在运行的类。

6、为什么要有super关键字?

对于子类集成父类的例子中,如果子类覆盖了父类的方法,如果想要调用父类原来的方法就必须使用super进行调用。

7、super错误使用样例:

class Father{
    public Father(){
        System.out.println("老爸在这");
    }
}
class Son extends Father{
    public Son(){
        System.out.println("儿子在这~");
        super();
    }
}

解释:会出现编译错误,super()必须为子类构造函数中的第一条语句。

8、

 

java面试题002

标签:解释   判断   集成   静态成员   stat   函数名   rgs   string   局部内部类   

原文地址:https://www.cnblogs.com/sunshinekevin/p/9081552.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!