abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
abstract的method 不可以是static的,因为抽象的方法是要被子类实现的,而static与子类扯不上关系!
native方法表示该方法要用另外一种依赖平台的编程语言实现的,不存在着被子类实现的问题,所以,它也不能是抽象的,不能与abstract混用。例如,FileOutputSteam类要硬件打交道,底层的实现用的是操作系统相关的api实现,例如,在windows用c语言实现的,所以,查看jdk 的源代码,可以发现FileOutputStream的open方法的定义如下:
private native void open(String name) throws FileNotFoundException;
如果我们要用java调用别人写的c语言函数,我们是无法直接调用的,我们需要按照java的要求写一个c语言的函数,又我们的这个c语言函数去调用别人的c语言函数。由于我们的c语言函数是按java的要求来写的,我们这个c语言函数就可以与java对接上,java那边的对接方式就是定义出与我们这个c函数相对应的方法,java中对应的方法不需要写具体的代码,但需要在前面声明native。
关于synchronized与abstract合用的问题,我觉得也不行,因为在我几年的学习和开发中,从来没见到过这种情况,并且我觉得synchronized应该是作用在一个具体的方法上才有意义。而且,方法上的synchronized同步所使用的同步锁对象是this,而抽象方法上无法确定this是什么。
分享到:
相关推荐
在C#编程语言中,"抽象"(Abstract)是一个核心概念,主要应用于类和方法,以支持面向对象编程中的多态性。本篇文章将详细探讨C#中的抽象类及其相关特性,帮助您深入理解并有效地运用这个关键概念。 首先,我们要...
在Java编程语言中,抽象类(abstract class)是面向对象编程的一个重要概念,它为其他类提供了一个模板设计。这个压缩包"Java_abstract_example.rar"包含了一个关于抽象类的实例,名为"AbstractTest.java",这非常...
Abstract_Factory抽象工厂Abstract_Factory抽象工厂Abstract_Factory抽象工厂Abstract_Factory抽象工厂
在Java编程语言中,`abstract`关键字用于定义抽象类(abstract class),这是一个非常重要的概念,它为多态性提供了基础。抽象类是不能被实例化的,它们的主要目的是作为其他类的基类,提供一个公共的接口或者部分...
### C# 抽象类与抽象方法详解 #### 一、引言 在面向对象编程中,抽象类和抽象方法是实现多态性的重要手段之一。C#作为一种强大的面向对象编程语言,支持抽象类和抽象方法的概念。本文将详细介绍C#中的抽象类与抽象...
在Java编程语言中,"abstract"关键字用于定义抽象类,这是一种特殊的类,它不提供具体的实现,而是作为其他类的模板或蓝图。Eclipse是一款强大的集成开发环境(IDE),广泛用于编写Java应用和其他编程语言的代码。在...
在这个系统中,"表面积和体积_抽象类Shape_shape类继承_"这个主题涉及到的是OOP中的一个重要概念——抽象类和类的继承。 首先,让我们来理解抽象类(Abstract Class)。抽象类是一种特殊的类,它不能被实例化,主要...
抽象精品ppt模板water_tower_abstract217
本资源是抽象类在实际应用中的一个例子,列举了学生写作文的例子进行详细的说明!
`jcm_django_abstract`可能是一个为Django框架提供抽象基类或实用工具的库。 描述中的信息表明,这个资源是从PyPI官方获取的,且它是一个`.whl`文件。`.whl`文件是Python的二进制分发格式,它允许用户在没有编译...
抽象精品ppt模板melancholy_abstract127
抽象精品ppt模板winter_abstract219
抽象精品ppt模板evergreen_abstract114
water_tower_abstract
RemObjects_Data_Abstract_for_NET_6.0.39.777_Cracked.rar
在C#编程语言中,`abstract`关键字是用来定义抽象类和抽象方法的,这是一种面向对象编程的概念。本文将深入探讨C#中`abstract`关键字的使用、抽象类的特性以及如何继承抽象类。 首先,我们需要了解什么是抽象类。...
RemObjects Data Abstract for Delphi是一款强大的数据抽象框架,专为Delphi开发者设计,旨在简化数据库应用程序的开发。这个压缩包“RemObjects_Data_Abstract_for_Delphi_9.2.101.1295.rar”包含了该框架的最新...
1.继承及继承实例 2.方法重写(Overwrite) 3.super关键字 4.方法重载(Overload) 5.final修饰符 6.abstract修饰符 7.抽象类 8.接口 9.接口和抽象类对比 10.接口和抽象类使用场合实例 11.总结