Java中抽象类和接口的区别及应用场景

        下面会简单介绍抽象类和接口的定义,并根据它们的属性,了解他们的区别,同时也会引导出他们的适用场景。如有缺陷请斧正。

抽象类

        定义:abstract关键字修饰的类就是抽象类。例:abstract  class  A{}

        注意:

                 1. 不允许用final修饰抽象类或抽象方法(final关键字修饰的类不能被继承,final修饰的方法不能被重写,这样的话,定义一个没有具体实现的方法和类是么有意义的)。

                2.也不允许static关键字修饰抽象方法(static关键字修饰的方法是通过方法名直接访问,他不能访问实例变量和实例方法,他就只能调用本身的方法,不具备用上转型对象调用子类方法的能力,也是没有意义的)

                3.抽象类中可以有抽象方法,也可以没有抽象方法

                4.抽象方法不能用new关键字创建对象

                5.抽象类的对象可以作为上转型对象( Animal a=new Tiger(); a就是上转型对象)

接口

        定义:interface关键字修饰的类。 例:interface  A{}

        注意:

                1.接口中只有抽象方法,接口中常量都是用public修饰,方法都是用public abstract修饰,我们在定义时,这些修饰符,系统都是帮我们自动省略的。

                2.接口的实现用implements关键字,一个类可以实现一个或者多个接口,接口名之间用逗号隔开。例:class A implements B,C,D{}

                3.如果非抽象类实现接口,需要重写里面所有的方法,而且访问权限都要用public修饰符进行修饰,不可省略。抽象类可以重写接口中的方法,也可以直接拥有接口中的方法

                4.public修饰的接口是public接口,不加public修饰的接口是友好接口。接口继承接口用extends关键字

                5.接口声明的变量是接口变量,可以用来实现接口回调的问题。

                

区别

        1.接口和抽象类都不能实例化,接口必须是abstract方法,而抽象类不用。

        2.接口可以用于多继承。抽象类只能继承一个。

        3.接口只能有常量,抽象类可以有常量和变量。

        4.继承的关键字不一样:接口继承接口和类继承类用extends,类继承接口用implements。

        5.抽象类将其抽象方法的实现交给子类,接口将抽象方法的实现交给实现该接口的类。

应用场景

        抽象类:某个问题需要子类除了需要重写父类的abstract的方法,还需要从父类继承变量或者重写重要的非abstract方法,就考虑abstract类

        接口:某个问题不需要继承,只需要很多子类给出重复的abstract方法的具体实现细节,就用接口

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值