interface接口的使用简述(一)
1、接口使用interface关键字描述定义
2、Java中,接口和类是并列的结构
3、如何定义接口:定义接口中的成员
3.1 JDK7及以前:只能定义全局常量和抽象方法
》全局常量:public static final的,但是书写时可以省略;
》抽象方法:public abstract的
3.2 JDK8:除了定义全局常量和抽象方法之外,还可以定义静态方法、默认方法。
4、接口中不能定义构造器:意味着接口不可以实例化
5、java开发中,通过类来实现(implements)接口使用:如果实现类覆盖了接口中的所有抽象方法,则此实现类就可以实例化;如果没有覆盖所有抽象方法,则此实现类仍为一个抽象类
6、java类可以实现多个接口 ----多实现弥补了java单继承性的局限性,格式:class A extends B implements C,D,E
7、接口与接口之间可以继承,并且可以多继承
8、接口具体的使用,体现多态性:见示例代码
9、接口,实际上可以看作是一种规范
补充-面试题:抽象类与接口有哪些异同?
//面试题1:当子类继承了同名的父类成员和接口成员时,如何区分使用
interface A{
int x=0;
}
class B{
int x =1;
}
class C extends B implements A{
public void pX() {
// System.out.println(x);//编译不通过,提示错误,x模糊
System.out.println(super.x);//1
System.out.println(A.x);//0
}
public static void main(String[] args) {
new C().pX();
}
}
//面试题2
interface Playable{
void play();
}
interface Bounceable{
void play();
}
interface Rollable extends Playable,Bounceable{
Ball ball = new Ball("pingpang");
}
class Ball implements Rollable{
private String name;
public String getName() {
return this.name;
}
public Ball(String name){
this.name = name;
}
public void play() {//重写了两个父接口中的play方法
// ball = new Ball("football"); 接口中定义了全局常量ball,不可以更改。
// System.out.println(ball.getName());
}
}
public class InterfaceTest1 { public static void main(String[] args) { System.out.println(Flyable.MAX_SPEED); System.out.println(Flyable.MIN_SPEED); Plane p1 = new Plane(); p1.fly(); System.out.println(Plane.MAX_SPEED); } } interface Attackable{ void attack(); }
interface Flyable{ //全局常量 public static final int MAX_SPEED = 7900;//第一宇宙速度 int MIN_SPEED=1;//省略了public static final //抽象方法 public abstract void fly(); void stop();//省略了public abstract } class Plane extends Object implements Flyable{
@Override public void fly() { System.out.println("通过引擎起飞"); } @Override public void stop() { System.out.println("通过驾驶员停止"); } } // 抽象类实现接口 abstract class Kite implements Flyable{ @Override public void fly() { } } //类Bullet实现多个接口 class Bullet implements Flyable,Attackable,CC{ @Override public void attack() { } @Override public void fly() { } @Override public void stop() { } @Override public void method1() { } @Override public void method2() { } } interface AA{ void method1(); } interface BB{ void method2(); } //接口可以继承,并可以继承多个 interface CC extends AA,BB{
}
浙公网安备 33010602011771号