黑马程序员技术交流社区

标题: 关于静态类名调用的问题。 [打印本页]

作者: 陈宇鹏    时间: 2013-4-4 20:35
标题: 关于静态类名调用的问题。
本帖最后由 陈宇鹏 于 2013-4-4 21:58 编辑

几天看到静态 突然就想到这样一个小小的问题。
就发上来看看
  1. class Person
  2. {
  3.         private static void show()
  4.         {
  5.                 System.out.println("show run");
  6.         }
  7. }
  8. class NewQuestion  
  9. {
  10.         public static void main(String[] args)
  11.         {
  12.                 Person.show();//类名可以直接调用静态方法,不用建立对象,所以我就想,私有化是外部无法进行访问,那么我直接用类名调用是否可以,结果是不行
  13.         }
  14. }
复制代码
所以,哥们就来问问原因。

作者: 杜超    时间: 2013-4-4 20:42
被private私有化的成员变量和函数只在本类中有效,外部类是不能直接访问的,这相当于将函数或变量进行封装,不让外部访问,这个是为了提高数据的安全性。但外部类要访问,这个类必须对外提供set,get方法,否则无法访问。
作者: 王杰123    时间: 2013-4-4 20:47
package qq.com;


class Person
{
        private static void show()
        {
                System.out.println("show run");
        }
}


public class NewQuestion {

         public static void main(String[] args)
     {
             Person.show();//结果是不行
            
             /*
              * 每个对象都有各自的属性和方法.但是有的属性涉及安全因素或秘密因素不能让外面的程序调用,所以就用到了private.
              *
              * private 是java访问权限修饰词,修饰类中成员。
                                                该关键字的意思是:除了包含该成员的类之外,其他任何类都无法访问这个成员。
              */
     }
}

作者: 蔡陶军    时间: 2013-4-4 20:55
之所以不可以 因为这个成员方法有private所修饰,
类名可以直接调用静态方法,的前提是这个静态方法没有被private所修饰的情况下

over
作者: 刘胜寒    时间: 2013-4-4 21:45
首先声明我是来看帖的,不是混技术分的...
java中很明确的定义了,本类中被私有化的成员,对外界是透明的。也就是说外界的任何实例或者对象都不能访问,只能通过期本类对外暴露的方法进行访问。
本类中定义的私有化成员只能被本类内部成员所访问。
并且遵守,静态只能访问静态这样的一些规则....
哥们多看书才是王道...
作者: 陈宇鹏    时间: 2013-4-4 21:57
似水像火 发表于 2013-4-4 21:45
首先声明我是来看帖的,不是混技术分的...
java中很明确的定义了,本类中被私有化的成员,对外界是透明的。 ...

感谢。只有你和楼上的我还能大概看明白。。。。
谢谢了~~~
作者: 陈宇鹏    时间: 2013-4-4 21:57
蔡陶军 发表于 2013-4-4 20:55
之所以不可以 因为这个成员方法有private所修饰,
类名可以直接调用静态方法,的前提是这个静态方法没有被pri ...

非常感谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2