public 和protected在java中的区别。

本文通过两个Java类的示例演示了public和protected访问修饰符的区别。在同一个包内,protected成员变量可以被访问;当引入不同包时,protected成员则无法直接访问,而public成员仍然可以跨包访问。

1.protected和public都可以访问。

test.java:

public class test {
        protected int k=20;
}

testover.java:

public class testover {
    public static void main(String args[])
    {
            test n3=new test();
            System.out.println(n3.k);
    }

2.protected不能访问,public可以访问.

加一个包package就可以看出区别了。

test.java:

package mx;
public class test {
        protected int k=20;
}

testover.java:

import mx.test;
public class testover {
    public static void main(String args[])
    {
            test n3=new test();
            System.out.println(n3.k);
    }

Java中的访问修饰符用于控制类、接口、变量方法的可见性访问权限。`public`、`protected``private`是Java中的三种访问修饰符,它们之间的区别主要体现在访问范围适用对象上。 ### public `public`修饰符表示公开的访问权限,被`public`修饰的类、接口、变量方法可以被所有类访问,无论这些类是否在同一个包中。例如,一个`public`类的方法可以被任何其他类调用。`public`适用于类、接口、变量方法[^1]。 ### protected `protected`修饰符表示受保护的访问权限,被`protected`修饰的变量方法可以被同一包中的类访问,同时也可以被不同包中的子类访问。这意味着即使子类不在同一个包中,只要它是父类的子类,就可以访问父类中被`protected`修饰的成员。需要注意的是,`protected`不能用于修饰外部类[^1]。 ### private `private`修饰符表示私有的访问权限,被`private`修饰的变量方法只能在定义它们的类内部访问。这意味着其他类,即使是子类或同一包中的类,也无法直接访问这些成员。`private`也不能用于修饰外部类[^1]。 ### 示例代码 下面是一个简单的示例,演示了不同访问修饰符的使用: ```java // 公共类 public class PublicClass { // 公共方法 public void publicMethod() { System.out.println("Public method"); } // 受保护的方法 protected void protectedMethod() { System.out.println("Protected method"); } // 私有方法 private void privateMethod() { System.out.println("Private method"); } } // 子类 class SubClass extends PublicClass { public void accessMethods() { // 可以访问公共方法 publicMethod(); // 可以访问受保护的方法 protectedMethod(); // 无法访问私有方法 // privateMethod(); // 编译错误 } } ``` 在上述代码中,`PublicClass`是一个公共类,它包含了一个公共方法`publicMethod`、一个受保护方法`protectedMethod`一个私有方法`privateMethod`。`SubClass`继承自`PublicClass`,它可以访问`PublicClass`中的公共受保护方法,但不能访问私有方法。 ### 访问权限总结 - `public`:对所有类可见。 - `protected`:对同一包内的类所有子类可见。 - `private`:仅对定义它们的类可见。 通过合理使用这些访问修饰符,可以有效地控制代码的封装性安全性,提高程序的健壮性可维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值