抽象类为什么不能写实现?

开拓者Amadues 2020-06-11 10:09:28
抽象类一般都是概念性的事物,但是概念性的事物也应该是有具体方法的。
比如说交通管理,我要知道交通管理有多少种交通工具就是一个方法。
...全文
1869 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
开拓者Amadues 2020-06-24
  • 打赏
  • 举报
回复
引用 6 楼 aw277866304 的回复:
既然叫抽象类了,为什么还要求它具体做什么? 比如手机生产抽象类,有生产主板方法,有生产手机壳方法,还有很多其他生产方法,还有组装方法。 有的厂只有组装方法,有的厂有生产方法,至于具体怎么生产、生产什么、组装方式由他们自己决定,其他厂家都管不着; 所以抽象类是决定了子类有什么属性,可以干什么而已。 子类集成父类后,父类有什么它就有什么,但还可以自己有自己的个性化东西。
抽象只是种概念上的总结,但是概念本身也是可能有具体做的事情的,一个典型的例子是获取名下所有具体实现的数据。
开拓者Amadues 2020-06-24
  • 打赏
  • 举报
回复
引用 5 楼 失足成万古风流人物 的回复:
之所以叫抽象类,就是把通用的操作抽象出来模型,特殊的操作留给每个特殊个体去自己完成。而通用的操作,就是定义在抽象类中的方法。 [quote=引用 4 楼 失足成万古风流人物 的回复:]

abstract class 造车类{
    public 造车(){
        生产轮子();
        生产发动机();
        。。。。。。。
    }
    protect abstract  生产轮子();
    protect abstract  生产发动机();
}

class 造奔驰 extends 造车类{
    protect  生产轮子(){
        生产牛逼轮子;
    }
    protect  生产发动机(){
        生产牛逼发动机;
    }
    。。。。。。
}

class 造奔奔 extends 造车类{
    protect  生产轮子(){
        生产土逼轮子;
    }
    protect  生产发动机(){
        生产土逼发动机;
    }
    。。。。。。
}
[/quote] 造车类如果有本身的方法呢?比如所有的轮子都生产一遍,这个具体实现要写在哪里?
  • 打赏
  • 举报
回复

abstract class 造车类{
    public 造车(){
        生产轮子();
        生产发动机();
        。。。。。。。
    }
    protect abstract  生产轮子();
    protect abstract  生产发动机();
}

class 造奔驰 extends 造车类{
    protect  生产轮子(){
        生产牛逼轮子;
    }
    protect  生产发动机(){
        生产牛逼发动机;
    }
    。。。。。。
}

class 造奔奔 extends 造车类{
    protect  生产轮子(){
        生产土逼轮子;
    }
    protect  生产发动机(){
        生产土逼发动机;
    }
    。。。。。。
}
CS_草祭先生 2020-06-12
  • 打赏
  • 举报
回复
既然叫抽象类了,为什么还要求它具体做什么? 比如手机生产抽象类,有生产主板方法,有生产手机壳方法,还有很多其他生产方法,还有组装方法。 有的厂只有组装方法,有的厂有生产方法,至于具体怎么生产、生产什么、组装方式由他们自己决定,其他厂家都管不着; 所以抽象类是决定了子类有什么属性,可以干什么而已。 子类集成父类后,父类有什么它就有什么,但还可以自己有自己的个性化东西。
  • 打赏
  • 举报
回复
之所以叫抽象类,就是把通用的操作抽象出来模型,特殊的操作留给每个特殊个体去自己完成。而通用的操作,就是定义在抽象类中的方法。
引用 4 楼 失足成万古风流人物 的回复:

abstract class 造车类{
    public 造车(){
        生产轮子();
        生产发动机();
        。。。。。。。
    }
    protect abstract  生产轮子();
    protect abstract  生产发动机();
}

class 造奔驰 extends 造车类{
    protect  生产轮子(){
        生产牛逼轮子;
    }
    protect  生产发动机(){
        生产牛逼发动机;
    }
    。。。。。。
}

class 造奔奔 extends 造车类{
    protect  生产轮子(){
        生产土逼轮子;
    }
    protect  生产发动机(){
        生产土逼发动机;
    }
    。。。。。。
}
行云边 2020-06-11
  • 打赏
  • 举报
回复
实现一般写在实现类里。既然你实现了这个抽象类,如果还是抽象的类的话,虽然这种写法是允许的,但是感觉接下来的逻辑会混乱。 本人一般使用接口比较多,抽象类比较少。最重要的原因是类可以实现多个接口,但是只能继承一个类。另外接口的逻辑会比抽象类清晰一点,因为抽象类如果继承的太复杂,有时候会找不到实现的地方。
qybao 2020-06-11
  • 打赏
  • 举报
回复
没有规定抽象类不能写实现啊?只是规定不能实例化而已

public abstract class A {
void a() {System.out.println("hello");}
public static void main(String[] args) {
//new A(); //不能实例化
new A() {}.a(); //可以匿名类的方式实例化并调用有实现的方法
}
}
imiMi_ 2020-06-11
  • 打赏
  • 举报
回复
说的好!

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧