需要关键字来指定该方法是从其 parent class 扩展而来的编程语言
Programming Languages where a keyword is needed to specify that the method is extended from its parent class
请原谅我的无知,但是有谁知道任何严格执行我在标题中给出的条件的语言吗?例如,使用 Python 语法,我们可以用这样的新方法扩展 class
class A:
pass
class B(A):
def foo(self):
pass
但是是否有一种语言需要额外的关键字,比如 new
,以指定此方法是 child class 所独有的,而不是重写其方法parentclass/es?例如:
class A:
pass
class B(A):
def new foo(self):
pass
我问这个是因为,当我在一个需要多重继承的项目上工作时,比如 class B(A, C, D)
,我看到了一个在 B
中定义的方法,我需要检查给定的是否方法来自其 parent class 之一或它自己的方法,我发现它非常乏味。
我能想到的最接近的是 Java 中的 @Override
注释,它可以应用于方法声明,以便编译器检查它是否覆盖了继承的方法(或实现接口方法)。
当与 linter 一起使用时,检查所有方法覆盖是否都用 @Override
注释,然后你的 IDE 会在你省略注释时给你一个 linter 警告。例如,IntellIJ IDEA and SonarSource 两者都有 linter 规则。
只要你严格遵守 linter 警告,那么它就是这个意义上的“严格”,但当然 linter 警告实际上并不会阻止你的代码被编译或执行。尽管如此,我不知道真正的编程语言有更接近的例子。不幸的是 Java 没有多重继承,所以它不能直接适用于您的问题。
请原谅我的无知,但是有谁知道任何严格执行我在标题中给出的条件的语言吗?例如,使用 Python 语法,我们可以用这样的新方法扩展 class
class A:
pass
class B(A):
def foo(self):
pass
但是是否有一种语言需要额外的关键字,比如 new
,以指定此方法是 child class 所独有的,而不是重写其方法parentclass/es?例如:
class A:
pass
class B(A):
def new foo(self):
pass
我问这个是因为,当我在一个需要多重继承的项目上工作时,比如 class B(A, C, D)
,我看到了一个在 B
中定义的方法,我需要检查给定的是否方法来自其 parent class 之一或它自己的方法,我发现它非常乏味。
我能想到的最接近的是 Java 中的 @Override
注释,它可以应用于方法声明,以便编译器检查它是否覆盖了继承的方法(或实现接口方法)。
当与 linter 一起使用时,检查所有方法覆盖是否都用 @Override
注释,然后你的 IDE 会在你省略注释时给你一个 linter 警告。例如,IntellIJ IDEA and SonarSource 两者都有 linter 规则。
只要你严格遵守 linter 警告,那么它就是这个意义上的“严格”,但当然 linter 警告实际上并不会阻止你的代码被编译或执行。尽管如此,我不知道真正的编程语言有更接近的例子。不幸的是 Java 没有多重继承,所以它不能直接适用于您的问题。