Cheug's Blog

当前位置:网站首页 / JAVA / 正文

抽象类

2019-03-15 / JAVA / 997 次围观 / 0 次吐槽 /


抽象类:可以理解为看不懂的类

抽象类的特点

        抽象类和抽象方法必须用abstract关键字修饰

        abstract class 类名{}

        public abstract void eat();

抽象类不能实例化,那么如何进行抽象类实例化?

        由具体的子类实例化。其实这也是多态的一种,抽象类多态

抽象类不一定有抽象方法,有抽象方法的类一定是个抽象类

抽象类的子类

       要么重写抽象类中的所有抽象方法

       要么是抽象类


抽象类成员的特点

                成员变量:即可以是变量,也可以是常量。

                abstract不能修饰成员变量(属性),只能修饰类和方法

                构造方法:抽象类也是有构造方法的,用于子类访问父类数据的初始化

                成员方法:抽象类的方法可以是抽象的,也可以是非抽象

                抽象类的成员方法特性:

                            抽象方法:强制要求子类实现

                            非抽象方法:子类继承实现自己的业务,提高代码的复用性



试题:

1.一个抽象类如果没有抽象方法,可不可以定义为抽象类?如果可以,有什么意义

  可以,这么做的目的只有一个,就是不让其它类创建本类对象,交给子类完成

  

2.abstract不能与哪些关键字共存

    abstract和static

            static修饰的方法是通过类名来调用

            abstract修饰的方法必须由子类来实现,并由子类对象来调用方法

            对象方法与类方法是冲突的

    abstract和final

           final修饰的方法是不能被重写的,所以也矛盾

    abstract和private

           private修饰的方法不让子类访问,所以也矛盾



Powered By Cheug's Blog

Copyright Cheug Rights Reserved.