总结
豆包 AI 助手文章总结
首页 > Java > java教程 > 正文

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

青灯夜游
发布: 2019-11-18 15:17:48
原创
2944人浏览过

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

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

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

抽象类(abstract class)

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

立即学习Java免费学习笔记(深入)”;

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

抽象类的特征:

 ( 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中文网其它相关文章!

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
豆包 AI 助手文章总结
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号