java:抽象类和接口的异同?-编程思维

异:

  1、抽象类中可以有私有属性、私有方法,接口中只能有常量和公开的方法。

  2、抽象类之间只能单继承,接口之间可以多实现和多继承。

  3、接口强调功能的实现,抽象类强调所属关系。

同:

  1、子类、实现类都必须重写它们的抽象方法,或者声明自己为抽象类。

  2、都不可以被实例化。

 


 

抽象类

简介:

  1、类被abstract修饰,不可被实例化,其余和正常类没有区别

  2、内部可以有被abstract修饰的抽象方法

  3、继承此类的子类必须重写抽象方法、或声明自己是抽象类

  4、重写方法时,访问修饰符和抛出异常必须大于等于父类的声明。

例子:

public  abstract class Demo_02 {
    //自己的属性
    private String name = "lurenjia";

    //正常方法
    public void getMyName() {
        System.out.println(name);
    }

    //待实现的抽象方法
    abstract void add(int a,int b);
}

接口

简介:

  1、接口使用关键字interface定义、不可被实例化,其余和正常类没有区别

  2、内部方法默认被修饰了public abstract ,属性默认被修饰了public static final

  3、实现此接口的类必须重写接口中的抽象方法,或者声明自己为抽象类。

  4、jdk 8 以后,支持在接口中创建默认方法和静态方法,同样默认为public,子类可以不重写默认方法。

  5、接口之间可以多继承,类与接口之间可以多实现。

例子:

//同一个包下可见的接口
interface DomeInterface {

    //一个隐式修饰 public static final 的变量
    String NAME ="lurenjia";

    //一个隐式修饰public abstract 的方法
    void getName();

    //jdk8:支持有实现的默认方法,隐式修饰:public
    default void sayHi(){
        System.out.println("Hi!");
    }
    //jdk8:支持实现的静态方法,隐式修饰:pubic
    public static void doSome(){
        System.out.println("i am doSomeThing.");
    }
}

版权声明:本文版权归作者所有,遵循 CC 4.0 BY-SA 许可协议, 转载请注明原文链接
https://www.cnblogs.com/lurenjia-bky/p/17198940.html