public、private、protected类成员(包括方法和变量)的不同

在 Java 中,publicprivateprotected 是三种用于修饰类成员(包括方法和变量)的访问修饰符。它们主要用于控制成员的访问范围和可见性。

public

  • 访问范围:可以被任何地方访问,包括同一个类、同一个包中的其他类、不同包中的类。
  • 使用场景:当你希望该方法对所有类开放,无论它们位于哪个包中,都可以使用 public 修饰符。
  • 示例
public class Example {
    public void publicMethod() {
        System.out.println("This is a public method.");
    }
}

private

  • 访问范围:只能在定义它的类内部访问,不能在类的外部访问。
  • 使用场景:当你希望该方法只在类的内部使用,不希望其他类(包括子类)访问时,可以使用 private 修饰符。
  • 示例
public class Example {
    private void privateMethod() {
        System.out.println("This is a private method.");
    }

    public void accessPrivateMethod() {
        privateMethod(); // 合法
    }
}

protected

  • 访问范围
    • 同一个类内部可以访问。
    • 同一个包中的其他类可以访问。
    • 子类可以访问,无论子类是否在同一个包中。
  • 使用场景:当你希望该方法在包内或通过继承关系在子类中使用,而不希望其他非子类的类访问时,可以使用 protected 修饰符。
  • 示例
public class Example {
    protected void protectedMethod() {
        System.out.println("This is a protected method.");
    }
}

// 同一个包中的其他类可以访问
class AnotherClassInSamePackage {
    public void accessProtectedMethod() {
        Example example = new Example();
        example.protectedMethod(); // 合法
    }
}

// 不同包中的子类可以访问
package com.example.child;

import com.example.Example;

public class Child extends Example {
    public void accessProtectedMethod() {
        protectedMethod(); // 合法
    }
}

访问修饰符的比较总结

修饰符同一个类同一个包子类(同包)子类(不同包)不同包的非子类
public可以可以可以可以可以
protected可以可以可以可以不可以
no modifier (default)可以可以可以不可以不可以
private可以不可以不可以不可以不可以

选择合适修饰符的指南

  • public:当你希望方法被所有类访问时使用。
  • protected:当你希望方法被同一包内的类和所有子类访问时使用。
  • default(无修饰符):当你希望方法仅被同一包内的类访问时使用。
  • private:当你希望方法仅在当前类内部使用时使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值