您的位置:

java抽象方法,java抽象方法的特点

本文目录一览:

关于java抽象方法

下面是抽象方法声明时采用的语法:abstract void f();

如果从一个抽象类继承,而且想生成新类型的一个对象,就必须为基础类中的所有抽象方法提供方法定义。如果不这样做(完全可以选择不做),则衍生类也会是抽象的,而且编译器会强迫我们用abstract 关键字标志那个类的“抽象”本质。即使不包括任何abstract 方法,亦可将一个类声明成“抽象类”。如果一个类没必要拥有任何抽象方法,而且我们想禁止那个类的所有实例,这种能力就会显得非常有用。

在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是反过来却不是这样。并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

抽象类往往用来表征我们在对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。比如:如果我们进行一个图形编辑软件的开发,就会发现问题领域存在着圆、三角形这样一些具体概念,它们是不同的,但是它们又都属于形状这样一个概念,形状这个概念在问题领域是不存在的,它就是一个抽象概念。正是因为抽象的概念在问题领域没有对应的具体概念,所以用以表征抽象概念的抽象类是不能够实例化的。在面向对象领域,抽象类主要用来进行类型隐藏。我们可以构造出一个固定的一组行为的抽象描述,但是这组行为却能够有任意个可能的具体实现方式。这个抽象描述就是抽象类,而这一组任意个可能的具体实现则表现为所有可能的派生类。模块可以操作一个抽象体。由于模块依赖于一个固定的抽象体,因此它可以是不允许修改的;同时,通过从这个抽象体派生,也可扩展此模块的行为功能。熟悉OCP的读者一定知道,为了能够实现面向对象设计的一个最核心的原则OCP(Open-Closed Principle),抽象类是其中的关键所在。

java中抽象方法不能为private、final或者static,为什么?

4)抽象方法不能为private,final或者static,为什么?马克-to-win:抽象方法的最实质的意\x0d\x0a义在于被未来的子类覆盖实现掉。它自己是个空方法。private的实质意义在于本类其他方法调用它。你自己是个空方法,别人调用你有什么用?所以\x0d\x0aabstract和private在一起毫无意义。final规定子类不能再覆盖它。abstract是专等着要别人来覆盖,二者矛盾。所以不能放在一起\x0d\x0a使用。有关static,我们上一章讲过:马克-to-win:static的成员是在程序执行到main时就已经确定的。要不为什么起\x0d\x0a名叫静态static呢?而本章后面,我们要讲多态的动态方法调度。动态方法调度就是指在运行时才决定执行哪个方法(是子类的还是父类的)。比如运行时如\x0d\x0a果用户输入自行车,就执行自行车的驾驶方法。马克-to-win:如果用户输入小轿车,就执行小轿车的驾驶方法,涉及到用户,这些都只能在运行时才能干。\x0d\x0a而abstract一定用到动态方法调度。所以这静态和动态二者是矛盾的,不能一起用。因为道理是这样,所以当时sun公司的设计者就这样设计\x0d\x0a了.。。。。。。。。。\x0d\x0a详情网上找“马克-to-win”,参考他的网站或他的百度空间:java第三章的内容,如果实在找不到,按我下面说的地址找: \x0d\x0a\x0d\x0a网站名是:mark-to-win.com\x0d\x0a再附加上下边的路径地址: /JavaBeginner/JavaBeginner3_web.html#AbstractNotFinalPrivateStatic

Java中什么叫做抽象方法只需声明,而不需实现?

抽象方法,顾名思义就是抽象的,只不过是有这么个东西,但是具体的实现是没有的。

举例:抽象的东西“食物”(汽车、动物等等),它就是一类东西的总称,声明一个东西是食物,肯定会联想到米饭、馒头、花卷等等,而这些东西才是真实存在的,它们才是食物的具体展现。

抽象方法定义:java中的抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型、方法名称和所需的参数,没有方法体,也就是说抽象方法只需要声明而不需要实现。

java 抽象方法 可以有参数吗?

肯定可以啊,抽象方法一般存在于抽象类中

而抽象类就将所有基础子类的共有特性抽离出来,避免代码重复。

所以抽象类就是用来作为父类让子类继承的

子类可以去重写父类的方法,扩展自己特有的方法

Java中抽象类和抽象方法的区别

1.抽象方法:在类中没有方法体的方法,就是抽象方法。

2.抽象类:含有抽象方法的类就叫抽象类。

3.抽象类中的抽象方法必须被实现!

4.如果一个子类没有实现父类中的抽象方法,则子类也成为了一个抽象类!

5.抽象类中的普通方法,可以不必实现。

6.用abstract来修饰一个类时,这个类叫做抽象类;用abstract来修饰一个方法时,该方法叫做抽象方法。

7.抽象类不能被实例化。

8.抽象方法只需声明,而不需实现某些功能含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写。

java 抽象方法可以是static吗

static是静态的。抽象方法的目的是希望子类重写(其实也不能叫重写,应该叫实现)这个抽象方法。而你又定义为static,这里就出现一个问题:static的方法能直接通过类名调用,而你这个方法没有具体的实现,这里就会自相矛盾,所以抽象方法不能用static修饰。