为什么Java里面的静态方法不能是抽象的

为什么Java里面的静态方法不能是抽象的?

问题是为什么Java里面不能定义一个抽象的静态方法?例如:

abstract class foo {abstract void bar( ); // <-- this is okabstract static void bar2(); //<-- this isn't why?
}

回答一

因为抽象的意思是”不实现任何功能“,而静态的意思是”无论你有没有一个对象实例,都要这个功能“,所以说它们逻辑上就是矛盾的。

回答二

抽象这个符号表示这个方法一定要在子类里面覆写

在Java里面静态成员(域和方法)不能被子类覆写(这不一定是绝对成立在别的面向对象的语言中,像SmallTalk)一个静态成员可能被隐藏起来,但是和覆写在本质上是不同的。

因为静态成员不能在子类里面被覆写,abstrac就不可能修饰它们了

顺便说一下,其他语言支持静态继承,就像实例继承那样。从语法的角度来看,这些语言通常要求类名被包括在语句里面。例如Java里面,假如你在写A类的代码,这些语句都是等价的(如果methodA() 是一个静态的方法,并且没有任何实例对象也具有有相同的签名):

ClassA.methodA();
methodA();

在SmallTalk里面,类名不是可选的,所以这个语法是(注意:SmallTalk不用.去分割主语和动词的,而是用它作为中止符号)

ClassA methodA.

因为这个类名是必须的,所以可以通过遍历这个类的层次结构去决定这个类的正确版本。值得一提的是,我会偶然错过静态继承,并且我刚开始使用Java时,就因为缺少静态继承而痛苦。另外,SmallTalk是鸭子类型的(因此是不支持契约编程的)。因此它没有对类成员的抽象修饰符。

文章翻译自Stack Overflow:https://stackoverflow.com/questions/370962/why-cant-static-methods-be-abstract-in-java

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/391024.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python16_day37【爬虫2】

一、异步非阻塞 1.自定义异步非阻塞 1 import socket2 import select3 4 class Request(object):5 def __init__(self,sock,func,url):6 self.sock sock7 self.func func8 self.url url9 10 def fileno(self): 11 return self.soc…

朴素贝叶斯实现分类_关于朴素贝叶斯分类及其实现的简短教程

朴素贝叶斯实现分类Naive Bayes classification is one of the most simple and popular algorithms in data mining or machine learning (Listed in the top 10 popular algorithms by CRC Press Reference [1]). The basic idea of the Naive Bayes classification is very …

python:改良廖雪峰的使用元类自定义ORM

概要本文仅仅是对廖雪峰老师的使用元类自定义ORM进行改进&#xff0c;并不是要创建一个ORM框架 编写fieldclass Field(object):def __init__(self, column_type,max_length,**kwargs):1&#xff0c;删除了参数name&#xff0c;field参数全部为定义字段类型相关参数&#xff0c;…

2019年度年中回顾总结_我的2019年回顾和我的2020年目标(包括数量和收入)

2019年度年中回顾总结In this post were going to take a look at how 2019 was for me (mostly professionally) and were also going to set some goals for 2020! &#x1f929; 在这篇文章中&#xff0c;我们将了解2019年对我来说(主要是职业)如何&#xff0c;我们还将为20…

在Java里重写equals和hashCode要注意什么问题

问题&#xff1a;在Java里重写equals和hashCode要注意什么问题 重写equals和hashCode有哪些问题或者陷阱需要注意&#xff1f; 回答一 理论&#xff08;对于语言律师或比较倾向于数学的人&#xff09;&#xff1a; equals() (javadoc) 必须定义为一个相等关系&#xff08;它…

vray阴天室内_阴天有话:第1部分

vray阴天室内When working with text data and NLP projects, word-frequency is often a useful feature to identify and look into. However, creating good visuals is often difficult because you don’t have a lot of options outside of bar charts. Lets face it; ba…

【codevs2497】 Acting Cute

这个题个人认为是我目前所做的最难的区间dp了&#xff0c;以前把环变成链的方法在这个题上并不能使用&#xff0c;因为那样可能存在重复计算 我第一遍想的时候就是直接把环变成链了&#xff0c;wa了5个点&#xff0c;然后仔细思考一下就发现了问题 比如这个样例 5 4 1 2 4 1 1 …

渐进式web应用程序_渐进式Web应用程序与加速的移动页面:有什么区别,哪种最适合您?

渐进式web应用程序Do you understand what PWAs and AMPs are, and which might be better for you? Lets have a look and find out.您了解什么是PWA和AMP&#xff0c;哪一种可能更适合您&#xff1f; 让我们看看并找出答案。 So many people own smartphones these days. T…

高光谱图像分类_高光谱图像分析-分类

高光谱图像分类初学者指南 (Beginner’s Guide) This article provides detailed implementation of different classification algorithms on Hyperspectral Images(HSI).本文提供了在高光谱图像(HSI)上不同分类算法的详细实现。 目录 (Table of Contents) Introduction to H…

在Java里如何给一个日期增加一天

在Java里如何给一个日期增加一天 我正在使用如下格式的日期: yyyy-mm-dd. 我怎么样可以给一个日期增加一天&#xff1f; 回答一 这样应该可以解决问题 String dt "2008-01-01"; // Start date SimpleDateFormat sdf new SimpleDateFormat("yyyy-MM-dd&q…

CentOS 7安装和部署Docker

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 https://blog.csdn.net/u010046908/article/details/79553227 Docker 要求 CentOS 系统的内核版本高于 3.10 &#xff0c;查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。通过 uname …

JavaScript字符串方法终极指南-拆分

The split() method separates an original string into an array of substrings, based on a separator string that you pass as input. The original string is not altered by split().split()方法根据您作为输入传递的separator字符串&#xff0c;将原始字符串分成子字符串…

机器人的动力学和动力学联系_通过机器学习了解幸福动力学(第2部分)

机器人的动力学和动力学联系Happiness is something we all aspire to, yet its key factors are still unclear.幸福是我们所有人都渴望的东西&#xff0c;但其关键因素仍不清楚。 Some would argue that wealth is the most important condition as it determines one’s li…

在Java里怎将字节数转换为我们可以读懂的格式?

问题&#xff1a;在Java里怎将字节数转换为我们可以读懂的格式&#xff1f; 在Java里怎将字节数转换为我们可以读懂的格式 像1024应该变成"1 Kb"&#xff0c;而1024*1024应该变成"1 Mb". 我很讨厌为每个项目都写一个工具方法。在Apache Commons有没有这…

ubuntu 16.04 安装mysql

2019独角兽企业重金招聘Python工程师标准>>> 1) 安装 sudo apt-get install mysql-server apt-get isntall mysql-client apt-get install libmysqlclient-dev 2) 验证 sudo netstat -tap | grep mysql 如果有 就代表已经安装成功。 3&#xff09;开启远程访问 1、 …

shell:多个文件按行合并

paste file1 file2 file3 > file4 file1内容为&#xff1a; 1 2 3 file2内容为&#xff1a; a b c file3内容为&#xff1a; read write add file4内容为&#xff1a; 1 a read 2 b write 3 c add 转载于:https://www.cnblogs.com/seaBiscuit0922/p/7728444.html

form子句语法错误_用示例语法解释SQL的子句

form子句语法错误HAVING gives the DBA or SQL-using programmer a way to filter the data aggregated by the GROUP BY clause so that the user gets a limited set of records to view.HAVING为DBA或使用SQL的程序员提供了一种过滤由GROUP BY子句聚合的数据的方法&#xff…

leetcode 1310. 子数组异或查询(位运算)

有一个正整数数组 arr&#xff0c;现给你一个对应的查询数组 queries&#xff0c;其中 queries[i] [Li, Ri]。 对于每个查询 i&#xff0c;请你计算从 Li 到 Ri 的 XOR 值&#xff08;即 arr[Li] xor arr[Li1] xor … xor arr[Ri]&#xff09;作为本次查询的结果。 并返回一…

大样品随机双盲测试_训练和测试样品生成

大样品随机双盲测试This post aims to explore a step-by-step approach to create a K-Nearest Neighbors Algorithm without the help of any third-party library. In practice, this Algorithm should be useful enough for us to classify our data whenever we have alre…

vue组件命名指南,不为取名而纠结

前言 自古中国取名文化博大进深,往往取一个好的名字而绞尽脑汁.那么一个好名字能够带来什么呢? 名字的内涵必需和使用者固有的本性相配套不和名人重名、不易重名、创意新颖&#xff0c;真正体现通过名字以区分人的作用响亮上口读起来流畅好听&#xff0c;协音美好&#xff0c;…