• 技术文章 >Java >java教程

    知道java抽象类与抽象方法是什么吗?

    青灯夜游青灯夜游2019-11-18 15:17:48原创1594

    java抽象类与抽象方法是什么?

    在类的继承中,如果一个个新的子类被定义,子类变得越来越具体,父类变得更加一般和通用,类的设计应该保证父子类能够共享特征,有时将父类设计得非常抽象,使得父类没有具体的实例,这样的类叫做抽象类;一般当我们设计一个类,不需要创建此类的实例时,可以考虑将该类设置成抽象类,让其子类实现这个类的抽象方法

    抽象类(abstract class)

    用abstract 关键字来修饰一个类时,这个类叫作抽象类。抽象类是它的所有子类的公共属性的集合,是包含一个或多个抽象方法的类。

    抽象类可以看作是对类的进一步抽象。在面向对象领域,抽象类主要用来进行类型隐藏。

    抽象类的特征:

    ( 1 ) 不可被实例化

    (2)抽象类是有构造器的(所有类都有构造器)

    (3)抽象方法所在的类,一定是抽象类(因为抽象方法是没有方法体的,如果所在的类不是抽象类,那么该类可以实例化对象,调用抽象方法,然后无方法体去具体实现功能,则矛盾)

    (4)抽象类可以没有抽象方法的

     //抽象类
    abstract class Person {
         String name;
         public Person(){}//抽象类的构造方法
         public abstract void dink();//抽象方法,无{}方法体
         public void eat(){ //非抽象方法
        };
    }
    class Student extends Person{
        @Override
        public void eat() {
            System.out.println("吃饭");
        }
        @Override
        public void dink() {
            System.out.println("喝水");
        }
    }

    抽象方法(abstract method)

    abstract修饰的方法为抽象方法,所有的抽象方法必须存在于抽象类中。

    在抽象类中定义的方法称为抽象方法,这些方法只有方法头的声明,而用一个分号来代替方法体的定义,即只定义成员方法的接口形式,而没有具体操作。

    抽象方法的特征:

    (1)格式,没有方法体,包括{ },例如 public abstract void dink();

    (2)抽象方法只保留方法的功能,具体的执行,交给继承抽象类的子类,由子类重写改抽象方法

    (3)如果子类继承抽象类,并重写了父类的所有的抽象方法,则此子类不是抽象类,可以实例化的

    (4)如果子类继承抽象类,没有重写父类中所有的抽象方法,意味着子类中还有抽象方法,那么此子类必须必须声明为抽象的。

    1.png

    上面的例子中,Student子类继承抽象父类,自重写了eat()抽象方法,没有重写drink()抽象方法,会报错,解决方法是把drink()方法也重写了,或者把Student也变成抽象类

    抽象类的使用场景

    抽象类一般在运用多态时,比较适用

    以上就是知道java抽象类与抽象方法是什么吗?的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:java 抽象类 抽象方法
    上一篇:java的类有什么用? 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • java出现gbk的不可映射字符怎么办• java中list集合的常用方法有哪些• java 变量会被继承吗• java接口可以继承吗?
    1/1

    PHP中文网