interface和abstract类的异同_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > interface和abstract类的异同

interface和abstract类的异同

 2018/5/7 18:56:34  一边天  程序员俱乐部  我要评论(0)
  • 摘要:1、jdk1.8之后,interface中的方法可以有方法体publicinterfaceInterfaceTest{[color=red]publicstaticvoidmethod(){System.out.println("thisisinterfacetest......");}publicdefaultvoidmethodOne(){//该方法可以在实现类中从写System.out.println("thisisinterfacetest");
  • 标签:
1、jdk 1.8 之后,interface中的方法可以有方法体
  
class="java" name="code">
public interface InterfaceTest {

    [color=red]public static void method(){
        System.out.println("this is interface test ......");
    }

    public default void methodOne(){ //该方法可以在实现类中从写
        System.out.println("this is interface test");
    }[/color]

    public void methodTwo();
}
   


interface和abstract相同点:

   1、都不能被实例化
不同点:

  类型abstract classinterface定义abstract  class u关键字interface关键字继承抽象类可以继承一个类和实现多个接口接口可以继承接口,子类可以实现多个接口访问修饰符抽象方法可以有public、protected和default接口方法默认修饰符是public,其他修饰符不可以使用方法实现可定义构造方法、抽象方法和具体方法接口类没有构造方法,jdk1.8之后方法可以有方法体实现方式子类使用extends关键字来继承抽象类,如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现子类使用关键字implements来实现接口。它需要提供接口中所有声明的方法的实现作用方法复用可以降低程序模块之间的耦合

示例:

  abstract类:

 
 public abstract class AbstractedClass {
    protected String getStringStr() {
        System.out.println("this is a abstract class method");
        return "";
    }

    public AbstractedClass (){
        System.out.println("this is a abstract construct");
    }

    public abstract String testAbstract();
}


  interface类:

 
 public interface InterfaceTest {

    public static void method(){
        System.out.println("this is interface test ......");
    }

    default void methodOne(){
        System.out.println("this is interface test");
    }

    void methodTwo();
}


实现类:

 public class InterfaceExtend extends AbstractedClass implements InterfaceTest {

    @Override
    public void methodTwo() {

    }

    public static void main(String [] args){
        InterfaceExtend interfaceExtend = new InterfaceExtend();
        interfaceExtend.methodOne();
        InterfaceTest.method();
        interfaceExtend.testAbstract();
        interfaceExtend.getStringStr();
        AbstractedClass abstractedClass = new InterfaceExtend();//上转型
        abstractedClass.getStringStr();
    }

    @Override
    public String testAbstract() {
        return null;
    }
}
  • 相关文章
发表评论
用户名: 匿名