A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈宇鹏 中级黑马   /  2013-4-4 20:35  /  1516 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 陈宇鹏 于 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. }
复制代码
所以,哥们就来问问原因。

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

6 个回复

倒序浏览
被private私有化的成员变量和函数只在本类中有效,外部类是不能直接访问的,这相当于将函数或变量进行封装,不让外部访问,这个是为了提高数据的安全性。但外部类要访问,这个类必须对外提供set,get方法,否则无法访问。
回复 使用道具 举报
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访问权限修饰词,修饰类中成员。
                                                该关键字的意思是:除了包含该成员的类之外,其他任何类都无法访问这个成员。
              */
     }
}

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

回复 使用道具 举报
之所以不可以 因为这个成员方法有private所修饰,
类名可以直接调用静态方法,的前提是这个静态方法没有被private所修饰的情况下

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

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

非常感谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马