首先,(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”的关系。接口中定义的是该继承体系的扩展功能。属于特性的东西