`
lufeng4321
  • 浏览: 58161 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

抽象类与接口的比较

    博客分类:
  • java
阅读更多
面试时经常会被问到抽象类与接口的区别,因此这里总结一下
可以从一下几个方面来考虑抽象类与接口的区别
1,组成方面
   抽象类的组成可以有抽象方法,普通方法,常量,变量,构造方法,全局常量
   接口的组成可以有抽象方法和全局常量
   从上面可以看出,抽象类中可以有普通方法,常量,变量和构造方法,因此在抽象类中是
可以存在实现方法的,即有方法体的方法,抽象类中可以存在非抽象方法

   例:
   package com.racky.abs;
   abstract class A{
        //普通方法,有方法体,该方法不是抽象方法
public void print(){
System.out.println("ererer");
}

       //抽象方法,无方法体
public abstract void fun();
    }
   接口中的方法都是抽象方法,没有方法体

   例:
   package com.racky.interf;

   public interface A {

//接口中不能有private定义的常量
        //private final int i=0;
public final int j=0;
public static final int x=0;// 全局常量

        //接口中不能有private方法
//private void print();
        //抽象方法
public void fun();
   }

2,继承方面
   子类通过extends继承抽象类,且一个子类只能继承一个抽象类,即单继承
   子类通过implements实现接口,子类可以实现多个接口,因此可用于实现多继承
3,抽象类与接口的关系
   一个抽象类可以实现多个接口,一个抽象类可以包含多个接口
   一个接口不能继承抽象类,只能实现多个接口,一个接口中可以包含多个抽象类
   例:抽象类中有接口
   abstract class A{
     public abstract void fun();
     interface B{//内部接口
        public void print();
     }
    }
   例:接口中有抽象类
   interface class A{
     public abstract void fun();
     abstract B{//内部抽象类
        public abstract void print();
     }
    }
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics