首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java静态方法是否可以可视化为: python中的函数+同名的实例方法( as of function)?

Java静态方法是否可以可视化为: python中的函数+同名的实例方法( as of function)?
EN

Stack Overflow用户
提问于 2019-03-25 07:56:39
回答 1查看 60关注 0票数 3

我正在尝试理解java中的静态方法。我以前做过一个基本的Python,所以我正在尝试用python可视化Java的静态方法。

是下面代码中的静态方法

class test{
    public static void main(String[] args) {
        printHello();
    }

    public static void printHello(){
        System.out.println("This is a Java's static method");
    } 
}

等同于这个吗?

def printhello():
    print("It is a printhello function")

class hello():
    def printhello(self):
        print("It is a printhello method of a instance")

由于静态方法可以在不创建对象的情况下访问,def printhello的工作方式如下所示。

当一个对象访问Java语言中的静态方法时,python类中提供的instance method将像这样工作。

如果不是,那么在python中实现java静态方法的可视化是正确的。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-25 08:13:44

这里

class Hello:
    def printhello(self):
        ...

您正在向该方法传递一个self引用。这意味着它是一个实例方法。

默认情况下,静态方法从不拥有对其包含类的实例的引用。

Python类静态方法通常是使用@staticmethod注解定义的,它们不接受self

class Hello:
    @staticmethod
    def printhello():
        ...

因此,上面的代码在Java中就变成了

class Hello {
    public static void printhello() {
        ...
    } 
}

Java没有第一级函数的概念,所以这是

def printhello():
    print("It is a printhello function")

并不是真正可翻译的,但它通常是在Python中定义自由/静态函数的一种更常用的方法。

正如你可能已经理解的,回答你的问题

是下面代码中的静态方法

..。

等同于这个吗?

不,它根本不是等同的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55329714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档