public ,private ,protected 及不写时的区别?

本文详细解释了Java中public、private、protected及默认四种访问修饰符的作用范围与区别,通过表格形式清晰展示了不同修饰符在当前类、同一包、子孙类和其他包中的可见性。

一、java作用域public ,private ,protected 及不写时的区别
在说明这四个关键字之前,我想就class之间的关系做一个简单的定义,对于继承自己的class,base class可以认为他们都是自己的子女,而对于和自己一个目录下的classes,认为都是自己的朋友。

1、public:public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用

2、private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有财产神圣不可侵犯嘛,即便是子女,朋友,都不可以使用。

3、protected:protected对于子女、朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private。

作用域 当前类 同一package 子孙类 其他package

public √ √ √ √

protected √ √ √ ×

friendly √ √ × ×

private √ × × ×

 

在面向对象编程里,privatepublicprotected 是用于控制成员访问权限的修饰符,它们的区别如下: - **public(公有)**:表明该数据成员、成员函数对所有用户开放,所有用户都能直接调用。的数据成员函数可被该对象派生访问。例如在 `public class Car` 中,`public int pubNum=1;` 这个 `pubNum` 成员拥有公共权限,可被任意对象访问修改 [^1][^2][^4]。 - **private(私有)**:表示私有,除了 class 自身之外,任何人都能直接使用。自己的可以访问,但派生能访问。比如在 `Car` 里,`private int priNum=4;` 这个 `priNum` 成员拥有私有权限,只有 `Car` 内部的方法能访问它 [^1][^2][^4]。 - **protected(保护)**:对于子女(派生)、朋友(友好)来说, public 一样,可以自由使用,没有限制;而对于其他外部 class,就 private 一样。自身派生能访问相当于自身的 private 型成员, private区别体现在对待派生上。派生继承基,若指定为 protected 继承,基public/protected 成员在子中变为 protected。例如 `Car` 中的 `protected int proNum=2;`,`proNum` 拥有被保护权限,`Car` 自身它的派生可以访问该成员 [^1][^2][^3][^4]。 以下是一个简单的 Java 代码示例,展示这三种权限的区别: ```java class Base { public int publicVar = 1; protected int protectedVar = 2; private int privateVar = 3; public void publicMethod() { System.out.println("This is a public method."); } protected void protectedMethod() { System.out.println("This is a protected method."); } private void privateMethod() { System.out.println("This is a private method."); } } class Derived extends Base { public void accessMembers() { System.out.println(publicVar); System.out.println(protectedVar); // 能访问 privateVar publicMethod(); protectedMethod(); // 能访问 privateMethod } } public class Main { public static void main(String[] args) { Base base = new Base(); System.out.println(base.publicVar); // 能访问 protectedVar privateVar base.publicMethod(); // 能访问 protectedMethod privateMethod Derived derived = new Derived(); derived.accessMembers(); } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值