java作用域public,private,protected,以及不写时的区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java作用域public,private,protected,以及不写时的区别相关的知识,希望对你有一定的参考价值。
java作用域public,private,protected,以及不写时的区别是什么?
public:公有,所有类都可以访问puotected:保护,同一类、同一包、不同包的子类可以访问
缺省:即什么都不写,同一类、同一包可以访问
private:私有,只有同一类中可访问 参考技术A public 是说可以被所有的类成员访问。
private是说只有该类的成员能访问
protected 是说在类的继承中才能使用
例如 b是a的子类 a里面的属性和方法 b都可以调用 但其他的 外部类就不可以用
什么都不写是说 在同一个包下的成员都可以访问 出这个包就不可以了
[学习笔记]Java的访问指示符public,protected,private,缺省的作用域
0.引言
Java的访问指示符public,protected,private,缺省可以用来修饰类和方法。
1.作用域如下
public: 其它类都能访问此类或方法
protected: 为继承而生的,子类可以访问父类该修饰的方法
private: 为类自己所用,一般修饰成员变量
缺省: 同一个包内可用(“友好”类)
2.同一个java文件里面若有多个类
(1) 每个编译单元(文件)都只能有一个public 类。每个编译单元有一个公共接口的概念是由那个公共类表
达出来的。根据自己的需要,它可拥有任意多个提供支撑的“友好”类。但若在一个编译单元里使用了多个
public类,编译器就会向我们提示一条出错消息。(即只能有一个是public修饰,其它为缺省)
(2) 可能(但并常见)有一个编译单元根本没有任何公共类。此时,可按自己的意愿任意指定文件名。(即可以都是缺省修饰,即无访问指示符修饰类名)
3.若不愿其他任何人访问那个类
我们现在对于类的访问只有两个选择:“友好的”或者public。若不愿其他任何人访问那个类,可将所有构建器设为private,然后用(singleton)单例模式或者静态方法获得此类的实例
//: Lunch.java // Demonstrates class access specifiers. // Make a class effectively private // with private constructors: class Soup { private Soup() {} // (1) Allow creation via static method: public static Soup makeSoup() { return new Soup(); } // (2) Create a static object and // return a reference upon request. // (The "Singleton" pattern): private static Soup ps1 = new Soup(); public static Soup access() { return ps1; } public void f() {} } class Sandwich { // Uses Lunch void f() { new Lunch(); } } // Only one public class allowed per file: public class Lunch { void test() { // Can‘t do this! Private constructor: //! Soup priv1 = new Soup(); Soup priv2 = Soup.makeSoup(); Sandwich f1 = new Sandwich(); Soup.access().f(); } } ///:~
4.例外
同一个Java文件中,我们现在对于类的访问只有两个选择:“友好的”或者public,但是如果是内部类,就可以使用protected和private来修饰。
以上是关于java作用域public,private,protected,以及不写时的区别的主要内容,如果未能解决你的问题,请参考以下文章
java基础面试题:请说出作用域public,private,protected,以及不写时的区别
java作用域public,private,protected,以及不写时的区别