Go 语言问题记录——私有方法、公有方法实现对比 | 青训营

839 阅读3分钟

Golang与Java私有方法与公有方法的实现对比

一、 在 Java 中

类的方法可以使用不同的访问修饰符进行修饰,最常见的是 private(私有)和 public(共有)。

1. 私有方法(private methods):

私有方法使用 private 修饰符进行修饰,只能在声明它们的类内部访问,无法从类外部或子类中访问。私有方法通常用于封装类的内部实现细节,对于外部的调用方来说是不可见的。

以下是一个示例:

public class MyClass {
    private void privateMethod() {
        // 私有方法的实现
    }

    public void publicMethod() {
        // 调用私有方法
        privateMethod();
    }
}

在上面的示例中,privateMethod() 是一个私有方法,只能在 MyClass 类内部调用。publicMethod() 是一个公有方法,可以从类外部访问,并在其中调用私有方法。

2. 公有方法(public methods):

公有方法使用 public 修饰符进行修饰,可以在任何地方都能访问到这些方法,包括其他类和子类。

以下是一个示例:

public class MyClass {
    public void publicMethod() {
        // 公有方法的实现
    }
}

在上面的示例中,publicMethod() 是一个公有方法,可以从任何地方都能访问到。

总结:

(1)私有方法使用 private 修饰符进行修饰,只能在声明它们的类内部访问。

(2)公有方法使用 public 修饰符进行修饰,可以在任何地方都能访问。

请注意,这里只是对私有方法和公有方法的简单介绍。Java 还有其他访问修饰符,如 protected(受保护的)和默认访问修饰符(没有明确的修饰符),它们在不同的访问上下文中有不同的可见性。

二、在 Golang中

没有类的概念,而是使用结构体(struct)和方法来组织代码。Go 语言中的私有方法和公有方法通过命名约定来实现。

1. 私有方法:

在 Go 语言中,没有像 Java 中的 private 修饰符来标识私有方法。相反,使用命名约定来表示私有方法,即方法名的首字母小写。

以下是一个示例:

type MyStruct struct {
    // 私有字段
    privateField int
}

func (s *MyStruct) privateMethod() {
    // 私有方法的实现
}

func (s *MyStruct) PublicMethod() {
    // 调用私有方法
    s.privateMethod()
}

在上面的示例中,privateMethod() 是一个私有方法,通过将方法名的首字母小写来表示。只有在 MyStruct 结构体的方法集合内部可以访问该方法。

2. 公有方法:

公有方法在 Go 语言中通过将方法名的首字母大写来表示,即以大写字母开头的方法是公有的。

以下是一个示例:

type MyStruct struct {
    // 公有字段
    PublicField int
}

func (s *MyStruct) PublicMethod() {
    // 公有方法的实现
}

在上面的示例中,PublicMethod() 是一个公有方法,因为它的方法名的首字母是大写的。其他包中的代码可以访问和调用该方法。

总结:

(1)Go 语言中没有类的概念,使用结构体和方法来组织代码。

(2)私有方法通过将方法名的首字母小写来表示,只能在同一包内部访问。

(3)公有方法通过将方法名的首字母大写来表示,可以在其他包中访问和调用。

请注意,这里只是对私有方法和公有方法的简单介绍。还有其他访问控制相关的机制,如导出和未导出标识符,以及包级别的可见性规则。这些机制在编写实际的 Go 代码时需要遵循。