疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

Java入门之面向对象接口面试题


 

   

  首先,(1)叙述接口的成员特点:

  [java]

  /*

  接口成员特点

  成员变量;只能是常量,默认都是常量,并且是静态的。

  默认修饰符:public static final

  建议:自己手动给出类似:public static final int num3 = 30;的格式

  构造方法:接口没有构造方法。

  成员方法:默认只能是抽象方法。

  默认修饰符:public abstract

  建议:自己手动给出。

  用几行代码验证上述特点。

  */

  interface Inter {

  public int num = 10;

  public final int num2 = 20;

  public static final int num3 = 30;//(默认)的,但是建议自己自动给出所有修饰

  //错误: 需要<标识符>,说明接口没有构造方法。

  //public Inter() {}

  //接口方法不能带有主体{},因为接口方法是没有内容的,说明只能是抽象方法。

  //public void show() {}

  //abstract void show(); //默认public,权限最大,因此在子类方法重写的时候访问权限不能更低,父类public子类更应该public建议字符类的权限修饰符都一样

  public void show(); //默认abstract,建议都写成:public abstract void show();

  }

  /*

  class InterImpl implements Inter {

  public InterImpl() {

  super();

  }

  }

  */

  class InterImpl extends Object implements Inter {//类实现接口。class 类名 implements接口名{}

  public InterImpl() {//子类默认继承于object中的无参构造方法

  super();

  }

  public void show() {}

  }

  //测试类

  class InterfaceDemo2 {

  public static void main(String[] args) {

  //创建对象

  Inter i = new InterImpl();//多态的方式,

  System.out.println(i.num);

  System.out.println(i.num2);

  System.out.println(i.num3);

  //i.num = 100;

  //i.num2 = 200;

  //System.out.println(i.num); //无法为最终变量num分配值

  //System.out.println(i.num2);//无法为最终变量num2分配值,验证了final修饰

  System.out.println(Inter.num);

  System.out.println(Inter.num2);//接口名称调用成员,说明有static修饰

  System.out.println(Inter.num3);

  System.out.println("--------------");

  }

  }

  (2)、抽象和接口比较:

  [java] view plain copy

  抽象类和接口的区别:

  A:成员区别

  抽象类:

  成员变量:可以变量,也可以常量

  构造方法:有

  成员方法:可以抽象,也可以非抽象

  接口:

  成员变量:只可以常量而且是静态

  构造方法:无

  成员方法:只可以抽象

  B:关系区别

  类与类

  继承,单继承

  类与接口

  实现,单实现,多实现

  接口与接口

  继承,单继承,多继承

  C:设计理念区别

  抽象类 被继承体现的是:”is a”的关系。抽象类中定义的是该继承体系的共性功能。向上抽取

  接口 被实现体现的是:”like a”的关系。接口中定义的是该继承体系的扩展功能。属于特性的东西