java面试题汇总(二)

11、Java中实现多态的机制是什么?

静态的多态:同一个类中,方法名相同,参数列表不同

动态的多态:引用变量的类型是父类或接口引用的是子类或实现类,运行时调用的是子类或者实现类的方法,编译时类型则是父类或接口。成员变量没有多态性,结果是编译时类型的成员变量或常量。

12、abstractclass和interface语法上有什么区别?

抽象类:用abstract修饰;可以定义成员变量、构造器(不用与实例化对象,用于子类调用)、初始化块、抽象方法(没有方法体,必须用abstract修饰)、普通方法、私有方法、内部类。抽象类通过子类实现抽象方法,所以abstract不能与final、private连用,也不能与static连用(类调用抽象方法时,该方法没有方法体会报错)。当一个类继承一个抽象类或者实现了一个接口却没有实现其全部的抽象方法,这个类一定是抽象类。

接口:interface。可以有常量,抽象方法,java8以后增加默认方法、私有方法、类方法、内部类。常量不加修饰符也会默认为public static final,抽象方法(默认为public abstract修饰),默认方法必须用default修饰。

13、一道笔试题。


图片发自App


图片发自App


图片发自App


14、abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?

都不可以,因为abstract申明的方法是要求子类去实现的,abstract只是告诉你有这样一个接口,你要去实现,至于你的具体实现可以是native和synchronized,也可以不是,抽象方法是不关心这些事的,所以写这两个是没有意义的。然后,static方法是不会被覆盖的,而abstract方法正是要子类去覆盖它,所以也是没有意义的。所以,总的来说,就是java语法不允许你这样做,事实上,也没有意义这样做。

15、内部类可以引用它的包含类的成员吗?有没有什么限制?

可以使用。非静态内部类不能使用包含类的静态成员。内部类分为四种静态内部类、非静态内部类、局部内部类、匿名内部类。因为是内部类所以访问控制符可以任意使用(public、protected、private)

看程序:


图片发自App


图片发自App


图片发自App

你可能感兴趣的:(java面试题汇总(二))