`

java public protected private static

    博客分类:
  • JAVA
阅读更多
public   对无论任何类都可见
protected只对子类可见
private只对该类可见
static是修饰方法的,定义成static的方法则不是当前类的方法,不可以通过类名.方法名访问

public   代表任何类都可以访问
private   代表只有类本身才可以访问
protected   在同一个包中,类及其子类可以访问
不加关键字,默认的是包的访问权限

static是静态的意思,静态的类或者变量只创建一次;不用创建任何实例就可以访问static的东西;


1、public   公有成员函数可被任何其它对象和类的成员函数调用。   当该成员函数必须被该函数所在的层次结构之外的其他对象和类在访问时。 
2、protected   被保护的成员函数可被它所在的类或该类的子类的任何成员函数调用。   当该成员函数提供的行为被它所在类的层次结构内部而非外部需要时。 
3、private   私有成员函数只可以被该类所在的其它成员函数调用,该类的子类不可以调用。   当该成员函数所提供的行为明确针对定义它的类时。私有成员函数常常是重新分配要素的结果。重新分配要素又叫“重组”,指类内其它成员函数封装某一个特定行为的做法。 
4、   static关键字
通常,我们创建类时会指出那个类的对象的外观与行为。除非用new创建那个类的一个对象,否则实际上并未得到任何东西。只有执行了new后,才会正式生成数据存储空间,并可使用相应的方法。
但在两种特殊的情形下,上述方法并不堪用。一种情形是只想用一个存储区域来保存一个特定的数据——无论要创建多少个对象,甚至根本不创建对象。另一种情形是我们需要一个特殊的方法,它没有与这个类的任何对象关联。也就是说,即使没有创建对象,也需要一个能调用的方法。为满足这两方面的要求,可使用 static(静态)关键字。一旦将什么东西设为static,数据或方法就不会同那个类的任何对象实例联系到一起。所以尽管从未创建那个类的一个对象,仍能调用一个static方法,或访问一些static数据。而在这之前,对于非static数据和方法,我们必须创建一个对象,并用那个对象访问数据或方法。这是由于非static数据和方法必须知道它们操作的具体对象。当然,在正式使用前,由于static方法不需要创建任何对象,所以它们不可简单地调用其他那些成员,同时不引用一个已命名的对象,从而直接访问非static成员或方法(因为非static成员和方法必须同一个特定的对象关联到一起)。
有些面向对象的语言使用了“类数据”和“类方法”这两个术语。它们意味着数据和方法只是为作为一个整体的类而存在的,并不是为那个类的任何特定对象。有时,您会在其他一些Java书刊里发现这样的称呼。
为了将数据成员或方法设为static,只需在定义前置和这个关键字即可。例如,下述代码能生成一个static数据成员,并对其初始化:

class   StaticTest   {
Static   int   i   =   47;
}


Java语言定义了public、protected、private、abstract、static和final这6常用修饰
词外还定义了5个不太常用的修饰词,下面是对这11个Java修饰词的介绍:
1.public
使用对象:类、接口、成员
介绍:无论它所处在的包定义在哪,该类(接口、成员)都是可访问的
2.private
使用对象:成员
介绍:成员只可以在定义它的类中被访问
3.static
使用对象:类、方法、字段、初始化函数
介绍:成名为static的内部类是一个顶级类,它和包含类的成员是不相关的。静态方法
是类方法,
是被指向到所属的类而不是类的实例。静态字段是类字段,无论该字段所在的类创建了
多少实例,该字
段只存在一个实例被指向到所属的类而不是类的实例。初始化函数是在装载类时执行
的,而不是在创建
实例时执行的。
4.final
使用对象:类、方法、字段、变量
介绍:被定义成final的类不允许出现子类,不能被覆盖(不应用于动态查询),字段值
不允许被
修改。
5.abstract
使用对象:类、接口、方法
介绍:类中包括没有实现的方法,不能被实例化。如果是一个abstract方法,则方法体
为空,该方
法的实现在子类中被定义,并且包含一个abstract方法的类必须是一个abstract类
6.protected
使用对象:成员
介绍:成员只能在定义它的包中被访问,如果在其他包中被访问,则实现这个方法的类
必须是该成
员所属类的子类。
7.native
使用对象:成员
介绍:与操作平台相关,定义时并不定义其方法,方法的实现被一个外部的库实现。
8.strictfp
使用对象:类、方法
介绍:strictfp修饰的类中所有的方法都隐藏了strictfp修饰词,方法执行的所有浮点
计算遵守
IEEE   754标准,所有取值包括中间的结果都必须表示为float或double类型,而不能利用
由本地平台浮
点格式或硬件提供的额外精度或表示范围。
9.synchronized
使用对象:方法
介绍:对于一个静态的方法,在执行之前jvm把它所在的类锁定;对于一个非静态类的方
法,执行
前把某个特定对象实例锁定。
10.volatile
使用对象:字段
介绍:因为异步线程可以访问字段,所以有些优化操作是一定不能作用在字段上的。
volatile有时
可以代替synchronized。
11.transient
使用对象:字段
介绍:字段不是对象持久状态的一部分,不应该把字段和对象一起串起。





在说明这四个关键字之前,我想就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        √          ×                    ×           ×

    注:不写时默认为friendly
分享到:
评论
2 楼 huihai 2011-03-03  
引用
使用对象:类、方法、字段、变量
介绍:被定义成final的类不允许出现子类,不能被覆盖(不应用于动态查询),字段值
不允许被
修改。



如果我 final StringBuffer str = new StringBuffer();
我完全可以str.apend("whp====");
这样就可以把final变量里的值改变了。final不能改变的只是当前实例的中当前的str的引用地值。

如果str是一个java基本的类型,那么字段值是不允许修改。但是相对于当前类的不同实例,当前final类型的成员变量还可以是不一样的。你可以这样做。
final int i = 随机函数生成一个数。在多个实例中,这个i值应是不一样的吧。
1 楼 huihai 2011-03-03  
static是修饰方法的,定义成static的方法则不是当前类的方法,不可以通过类名.方法名访问


这名话有问题吧

相关推荐

    JS中的public和private对象,即static修饰符

    在JavaScript中,public、private和static这些概念并非原生关键字,但可以通过特定的编码模式来实现类似的功能。在C#等静态类型语言中,public、private和static是访问修饰符,用于控制类成员的可见性和作用域。而在...

    java中public、protected、默认、private关键字

    Java 访问修饰符(public、protected、默认、private) Java 中的访问修饰符是 Java 语言中一种基本概念,用于控制类、方法、变量、构造方法等成员的访问权限。 Java 中有四种访问修饰符:public、protected、默认...

    用java代码来解析private、public、default、protected的权限问题

    本文将深入探讨`private`、`public`、`default`(默认)和`protected`这四种访问权限,并通过代码示例来解析它们在实际编程中的应用。 1. `private`权限: `private`是最低级别的访问权限,它限制了成员只能在同一...

    面向对象修饰符public private protest super final abstract理解

    这些修饰符包括`public`、`private`、`protected`以及`final`和`abstract`等。下面将详细解释这些关键字的意义及其在面向对象设计中的作用。 ### 1. `public` `public`是最开放的访问修饰符,意味着无论在哪一个类...

    详谈PHP中public,private,protected,abstract等关键字的用法

    在PHP编程语言中,类和对象的访问控制和特性修饰主要通过几个关键字来实现,包括`public`、`private`、`protected`、`abstract`和`static`。这些关键字对于理解和创建面向对象的PHP代码至关重要。 1. `public`...

    static在Java语言中的作用

    protected static class PDestination implements Destination { private String label; private PDestination(String whereTo) { label = whereTo; } public String readLabel() { return label; } } ...

    php class中public,private,protected的区别以及实例分析

    值得注意的是,在类定义中,属性和方法可以使用public、private或protected关键字来限定其访问级别。如果没有明确指定属性或方法的访问级别,则其默认为public。这意味着,它们可以被类的外部代码访问和调用。 此外...

    Java关键字英文解释

    public static void main(String[] args) { String str = null; StringBuffer sb = null; } } ``` 8. **new**: 创建新对象的关键字,它分配内存并初始化对象。例如: ```java public class Test { public ...

    单例模式介绍

    private static final StaticSingleton INSTANCE = new StaticSingleton(); private StaticSingleton() {} public static StaticSingleton getInstance() { return INSTANCE; } } ``` 2. 懒汉式单例(Lazy...

    J2SE技术基础摸底试卷

    一.选择题(15题X1 共计15) (1)下列关于继承的哪项...A)将private int m 改为protected int m B)将private int m 改为 public int m C)将private int m 改为 static int m D)将private int m 改为 int m ......

    Java访问修饰符

    访问修饰符可以分为四种:public、protected、private 和缺省(无访问修饰符)。 public 访问修饰符 public 访问修饰符是最宽松的访问权限,可以被所有类访问。使用 public 访问修饰符的类必须定义在和类名相同的...

    Java基础测试题答案.doc

    在 Java 中,有四种访问权限:public、private、protected 和 default。public 访问权限是最高的,可以被所有类访问。private 访问权限是最低的,只能被当前类访问。protected 访问权限介于两者之间,能够被当前类和...

    java访问权限修饰符public.doc

    访问权限修饰符分为四种:public、protected、friendly 和 private。每种修饰符都有其特定的访问权限和使用场景。 一、public 访问权限修饰符 public 访问权限修饰符表明该成员变量和方法是共有的,能在任何情况下...

    Java Socket 编程源代码示例

    private static ArrayList User_List = new ArrayList(); private static ArrayList Threader = new ArrayList(); private static LinkedList Message_Array = new LinkedList(); private static int Thread_...

    Java单例模式设计

    private static final Singleton INSTANCE = new Singleton(); private Singleton() {} public static Singleton getInstance() { return INSTANCE; } } ``` 在这种模式下,Singleton类在类加载时即被初始化...

    java面向对象

    Java中有四种访问权限控制符:`public`、`protected`、`private`和`default`。它们控制了类成员的可见性范围。 示例代码: ```java public class MyClass { private String privateField; // 私有字段 protected ...

    Java中static、this、super、final用法.docx

    ### Java中static、this、super、final用法详解 #### 一、Static关键字的使用 在Java编程语言中,`static`是一个非常重要的关键字,它主要用于定义类成员(包括变量和方法)为静态成员。静态成员的特点是它们不...

Global site tag (gtag.js) - Google Analytics