【Java基础】详解abstract关键字

目录

abstract关键字

修饰范围:

作用:

        修饰类:

        修饰方法:

抽象类和抽象方法的关系

abstract与final、static、private、native的关系

        final和abstract不能修饰同一个对象或类

        static和abstract不能修饰同一个对象或类

        private和abstract不能同时修饰一个对象或类

        native和abstract不能修饰同一个对象或类


abstract关键字

说道抽象类,首先就要提到abstract关键字

修饰范围:

        类,方法

作用:

        修饰类:

                abstract修饰类,代表这个类为抽象类

                1.抽象类除了不能实例化对象(不能用new创建一个抽象类的对象)之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。

                2.由于抽象类不能实例化对象,所以抽象类必须被继承后,才能被使用。否则则不可使用

                3.如果一个非abstract类是abstract类的子类,他必须重写父类的抽象方法父类中的非抽象方法可以不用重写),并给出方法体

                4.如果一个抽象类是另一个抽象类的子类,他可以重写父类的abstract方法,也可以继承父类的abstract方法

        修饰方法:

                abstract修饰方法,代表这个类为抽象方法

                1.抽象方法只允许声明,不允许实现(没有的方法体)

抽象类和抽象方法的关系

        1.abstract类中可以有abstract方法,也可以有非abstract方法

        2.非abstract类不能有abstract方法

abstract与final、static、private、native的关系

        final和abstract不能修饰同一个对象或类

                对于类来说,被final修饰代表不能被继承,而被abstract修饰的方法不被继承就无法被使用

                对于方法来说,被final就是代表方法不能被重写,而被abstract修饰的方法不被重写就无法被使用

        static和abstract不能修饰同一个对象或类

                对于类来说,static无法修饰普通类,static修饰内部类相当于这个类是一个普通类(存疑?)

                对于方法来说,因为static修饰的方法为静态方法,是这个类所有对象共用的,可以直接用类名调用,而被abstract修饰的方法没有方法体,无法直接被调用,需要在子类或者实现类中重写才可以调用

        private和abstract不能同时修饰一个对象或类

                对于类来说,private不能修饰类

                对于方法来说,如果一个方法被修饰为private,代表这个方法不能被继承,而abstract方法需要被继承才可以重写

        native和abstract不能修饰同一个对象或类

                对于类来说,native是个方法修饰符,不能用于修饰类

                对于方法来说,native修饰的是一个本地方法,该方法不能由java实现,比如C/C++,因为native暗示这个方法是有方法体的,只不过这些实现体是非java的,abstract却显然的知名这些方法无实现体

综上所述,abstract不能和final,static,private,native共用

上一篇:static,final,单例设计模式和abstract(保姆级笔记)


下一篇:Day11 Java 多态、抽象