static和abstract为什么不能在一起(abstract与哪些关键字不能共存为什么)

本文目录
- abstract与哪些关键字不能共存为什么
- 允许使用static修饰abstract方法吗
- java抽象类中可以定义静态的抽象方法吗为什么
- abstract 的method 是否可同时是static,是否可同时是native,是否可同时是synchronized
- 静态方法能同时用static和abstract说明吗
abstract与哪些关键字不能共存为什么
【答案】:private:私有的方法是不可见的,无法被复写
final:被final修饰的方法是最终方法,无法被复写
static:被static修饰的方法,要随类加载到方法区,由于抽象方法没有方法体所以不能加载。
允许使用static修饰abstract方法吗
很明显不可以,自己去写代码试一下就知道的问题。
我再额外补充一下为什么不允许用static修饰,因为static修饰的方法是属于当前类的,是无法被子类继承的,而abstract方法又没有方法体,需要子类通过继承进行实现,这两点是互相矛盾的,所以抽象方法无法通过static修饰符修饰
java抽象类中可以定义静态的抽象方法吗为什么
不可以。
我是这样理解的:抽象类是不能实例化的,即不能被分配内存,而static修饰的方法在类实例化之前就已经别分配了内存,这样一来矛盾就出现了:抽象类不能被分配内存,而static方法必须被分配内存。所以抽象类中不能有静态的抽象方法。
这和接口是一样的,接口中的方法也只能是 public abstract修饰的,不能加上static。
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 应该是作用在一个具体的方法上才有意义。
静态方法能同时用static和abstract说明吗
好吧,我承认我刚才是随便说说的。
静态方法是不能继承的,因为它是静态的,所谓静态当然是时间和空间的静止喽……所以任何人都别想改变他。
但是它不介意有人和它叫一样的名字,所以子类是可以cover的,但是其实这样会出来两个函数,一个父类的一个子类的,各管各的。
然后final是java里面定义的,不能被重载的函数。
java里面的函数如果没有特别标识,只要在子类中定义了一个同名的函数,那么父类的函数就被重载掉了。如果new一个子类的对象给父类再调用这个函数,就是调用子类的了。只有new的是父类的调的才是父类的。
java里面没有virtual的说法,因为不是final或static就是virtual的。
abstract是虚函数,自然不可能是final的,同时如上所说,static是不能被重载只能被覆盖的,所以也不可以是abstract的

更多文章:
blast premier春季赛(csgo战队vitality有谁)
2026年9月7日 21:50
全球新冠肺炎疫情背景下航运发展(盐田港复苏日志:半年历劫从“低谷”到“爆仓” 疫情之后巨轮如何越洋航行)
2026年9月7日 17:10
matlab求解带字母参数方程组(我想matlab求一个关于x,y的方程组 ab c d f e h m n 都是参数)
2026年9月7日 16:30
oracle中的循环语句(下面哪个不是oracle程序设计中的循环语句 a for)
2026年9月7日 15:30
电脑里2个系统怎么删除一个(电脑开机显示有两个系统,如何删除一个)
2026年9月7日 12:20






