《java入门第一季》之面向对象接口面试题
首先,(1)叙述接口的成员特点:
/* 接口成员特点 成员变量;只能是常量,默认都是常量,并且是静态的。 默认修饰符: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)、抽象和接口比较:
抽象类和接口的区别: A:成员区别 抽象类: 成员变量:可以变量,也可以常量 构造方法:有 成员方法:可以抽象,也可以非抽象 接口: 成员变量:只可以常量而且是静态 构造方法:无 成员方法:只可以抽象 B:关系区别 类与类 继承,单继承 类与接口 实现,单实现,多实现 接口与接口 继承,单继承,多继承 C:设计理念区别 抽象类 被继承体现的是:”is a”的关系。抽象类中定义的是该继承体系的共性功能。向上抽取 接口 被实现体现的是:”like a”的关系。接口中定义的是该继承体系的扩展功能。属于特性的东西