接口与抽象方法的异同

相同点:

  • 都有抽象方法
  • 接口同类一样,在使用上也满足多态性
  • 接口的实现与抽象类的继承相似

接口通过让类去实现(implements)的方式来使用。
如果实现类覆盖了接口中的所有方法,则此实现类就可以实例化;如果实现类没有覆盖接口中所有的抽象方法,则此实现类仍为一个抽象类,需要用abstract修饰。

若子类重写了父类中所有的抽象方法,此子类可以实例化,如果子类没有重写父类中所有的抽象方法,则此子类仍为抽象类,需要用abstract修饰。

public class InterfaceTest {
    public static void main(String[] args) {
    //接口的静态变量的调用和类相同,使用接口.静态变量直接调用
        System.out.println(flyable.MAX_SPEED);
        PaperKite paperKite = new PaperKite();
        paperKite.stop();
        paperKite.fly();
	//接口的实现类同样继承了接口的属性        
        int maxSpeed = paperKite.MAX_SPEED;
        System.out.println(maxSpeed);
    }
}

interface flyable{

    public static final int MAX_SPEED=7900;
    int MIN_SPEED=1;

    public abstract void fly();
    void stop();

}
//实现类没有实现接口的所有抽象方法,则仍为抽象类
//此抽象类的抽象方法 public abstract void stop()没有显示
abstract class Kite implements  flyable{
    public void fly(){
        System.out.println("小风筝,我们走");
    }
}
class PaperKite extends Kite{
    public void stop(){
        System.out.println("飞到尽头自然停");
    }
}

注意 :接口的实现类同样继承了接口的属性;如果接口与父类有子类没有的同样属性,则调用的方式如下:

interface A {
	int x=1;
}
class B{
	int x=2;
}
class C extends B implements A{
	public void show(){
		System.out.println(A.X);//返回1
		System.out.println(super.x);//返回2
	}
	public static void main(String args[]){
		new C().show();
	}
}

不同点:

  • 接口中不能定义构造器,抽象类中一定有构造器(可以是隐式的空参构造器)
  • 接口与接口之间可以多继承,抽象类作为类不可以多继承
interface AA{
	void method1();
}
interface BB{
	void method2();
}
interface CC extends AA,BB{
}
  • 一个类可以实现多个接口
class Bullet extends Object implements Flayable,Attackable{
	//重写的方法
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值