龙空技术网

接口和抽象类

爱学习的小菜鸟 46

前言:

眼前我们对“抽象类中不可以有非抽象方法”大概比较珍视,兄弟们都需要知道一些“抽象类中不可以有非抽象方法”的相关内容。那么小编在网络上搜集了一些对于“抽象类中不可以有非抽象方法””的相关资讯,希望小伙伴们能喜欢,小伙伴们快快来学习一下吧!

抽象类

抽象方法的声明没有方法体。

abstract void func();

包含抽象方法的类叫做抽象类。

public abstract class Basic{    abstract void func();    protected abstract void func1();    public abstract void func2();}

抽象方法默认是public的,不可以设置为private

抽象类总结抽象类不能被实例化,应该由实现了其抽象方法的子类来进行实例化抽象方法必须由子类来重写只要包含了一个抽象方法的类,该类就是抽象类抽象类中可以包含具体的方法,当然也可以不包含抽象方法子类的抽象方法不能与父类的抽象方法同名abstract不能与final同时修饰一个类(因为final不可被继承,而abstract必须由子类来继承实现)abstract不能与private、static、final或native同时修饰一个方法接口

在java8之前的接口只允许有抽象方法,是一个完全抽象的类,没有提供任何实现

接口中的属性被隐式指明为static和final

public interface Inter{    int m();}

java8之后允许接口包含默认方法和静态方法

默认方法允许在不破坏已使用接口的代码的情况下,在接口中新增方法

public interface Inter{    int m();    default void newMethod(){        System.out.println("新增方法");    } }

静态方法可以将工具功能放在接口,从而操作接口

public interface Operations{    void execute();    static void runOps(Operations... ops){        for(Operations op : ops){            op.execute();        }    }  static void test(){        System.out.println("接口静态方法");    }    static void main(String[] args) {        test();    }}
接口总结在java8之前只能有抽象方法,java8之后可以有默认方法和静态方法接口不能有构造器接口的方法默认是public的接口中的属性全部为public static final修饰java8之前接口没有main方法,java8之后可以有main方法抽象类和接口比较可以实现多个接口;但只能继承一个抽象类接口只能包含静态属性,不支持对象状态,成员变量默认是public static final的;抽象类可以包含属性,非抽象方法可能引用这些属性接口不需要在子类实现默认方法,默认方法可以引用其他接口的方法;抽象类必须在子类中实现抽象方法接口没有构造器;抽象类可以有构造器接口隐式为public;抽象类可以为protected抽象类是对事物的抽象,接口是对行为的抽象

标签: #抽象类中不可以有非抽象方法