相关疑难解决方法(0)

为什么静态方法在Java中不能是抽象的

问题是在Java中为什么我不能定义一个抽象的静态方法?例如

abstract class foo {
    abstract void bar( ); // <-- this is ok
    abstract static void bar2(); //<-- this isn't why?
}
Run Code Online (Sandbox Code Playgroud)

java abstract-class static-methods

572
推荐指数
8
解决办法
26万
查看次数

为什么我不能在C#中使用抽象静态方法?

我最近一直与提供商合作,我遇到了一个有趣的情况,我希望有一个抽象的静态方法.我读了一些关于这个主题的帖子,这有点意义,但有一个很清楚的解释吗?

.net c# language-design

175
推荐指数
8
解决办法
10万
查看次数

为什么PHP 5.2+禁止抽象静态类方法?

在PHP 5.2中启用严格警告后,我看到一个项目的严格标准警告,这些警告最初是在没有严格警告的情况下编写的:

严格标准:静态函数 Program :: getSelectSQL()在Program.class.inc中不应该是抽象

有问题的函数属于抽象父类Program,并被声明为abstract static,因为它应该在其子类中实现,例如TVProgram.

我确实在这里找到了对此更改的引用:

删除了抽象的静态类函数.由于疏忽,PHP 5.0.x和5.1.x允许在类中使用抽象静态函数.从PHP 5.2.x开始,只有接口才能拥有它们.

我的问题是:有人可以清楚地解释为什么在PHP中不应该有一个抽象的静态函数?

php oop static abstract

120
推荐指数
4
解决办法
6万
查看次数

PHP中的抽象trait't方法不允许是静态的?

这是我的例子:

trait FileConfig {
    public static function getPathForUploads() {
        $paths = static::getPaths();
        //etc.
    }

    abstract public static function getPaths(); //doesn't work. Error: "Static function SharedDefaultConfig::getPaths() should not be abstract"

    abstract public function getPaths(); //OK
    public static function getPaths() {} //OK
}
Run Code Online (Sandbox Code Playgroud)

类:

class AppConfig {
    use FileConfig;

    public static function getPaths() {
        return array(...);  
    }
}
Run Code Online (Sandbox Code Playgroud)

呼叫:

AppConfig::getPathForUploads();
Run Code Online (Sandbox Code Playgroud)

将它设置为静态和抽象(使用FileConfig强制类来实现getPaths)必要的.

我想知道如何实现改变它的静态属性的方法?这是一个好习惯还是有更好的解决方案?有一天会变成非法吗?

谢谢

php oop traits

5
推荐指数
1
解决办法
5299
查看次数