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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 周志伟 黑马帝   /  2013-4-10 01:30  /  2208 人查看  /  17 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 周志伟 于 2013-4-11 03:00 编辑
  1. class Person
  2. {
  3.         private int age;

  4.         public void haha(int a)
  5.         {
  6.                 age = a;
  7.         }

  8.         void speak()
  9.         {
  10.                 System.out.println("age = " + age);
  11.         }
  12. }

  13. class PersonDemo
  14. {
  15.         public static void main(String[] args)
  16.         {
  17.                 Person p = new Person();
  18.                 p.age = 20;                //当Person类里的age被private以后,main方法中的p对象就不能访问age了;
  19.                                               //那为什么Person类中的haha方法可以访问私有属性age呢?????是因为haha和age在一个类中吗??????
  20.                 p.haha(20);
  21.                 p.speak();
  22.         }
  23. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

17 个回复

倒序浏览

回帖奖励 +1

private修饰的成员变量和方法称之为私有变量和私有方法,类中限定为private的成员,只能被这个类本身访问!如果一个类的构造方法声明为private,则其他类不能生成该类的一个实例!   这是private的定义

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
Asan 发表于 2013-4-10 01:43
private修饰的成员变量和方法称之为私有变量和私有方法,类中限定为private的成员,只能被这个类本身访问! ...

“如果一个类的构造方法声明为private,则其他类不能生成该类的一个实例!”
这一句能再解释一下吗?谢谢啦~~~
回复 使用道具 举报

回帖奖励 +1

如果1个类的构造方法为private,则其他类不能生成类的对象
因为创建new一个对象时,必须调用其构造方法,如果构造方法为私有
则外部类不能访问,因而不能创建类的对象
记住:创建对象必须构造方法不是私有
要不然,外部不能访问因而不能创建
建议你看看毕老师讲的new Person()都做了哪些事的视频
回复 使用道具 举报

回帖奖励 +1

private 修饰成员变量,那么这个变量只在本类中可以直接访问,而外界需要调用该类提供访问的方法来访问
回复 使用道具 举报

回帖奖励 +1

外部类的方法就不能访问private修饰的本类方法和属性,但是本类中的方法可以使用private修饰的本类的属性。这就是Java三大特性的封装的特点
回复 使用道具 举报

回帖奖励 +1

被private修饰的成员变量或方法对外是不可见的,只能通过类本身公有方法访问。
隐藏类的属性或具体实现方法(通过public的方法访问隐藏的属性,或调用隐藏的方法)就是封装。
回复 使用道具 举报
方法中的变量为局部变量和成员变量重名是可以的。因为其作用范围不一样。其中局部变量会覆盖成员变量。也就是说在方法中的局部变量相当于全局变量。可以对其进行任何操作,包括赋值。对象调用这个方法。为其赋值是天经地义的。因此有 p.age = 20;  。还有,最重要的是类中的私有是相当于别的类的。对自已的成员不存在私有的。

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
private (私有的)权限修饰的成员,只能在本类中被访问(如果是:public 、protect或默认权限就可以访问到 ),private是java中最小的权限修饰符。p.haha(20)是通过对象来访问Person类中的成员。
回复 使用道具 举报
周志伟 发表于 2013-4-10 02:32
“如果一个类的构造方法声明为private,则其他类不能生成该类的一个实例!”
这一句能再解释一下吗?谢谢 ...

实例的意思就是在对内存中生成对象,当一个类被私有修饰后,该类就在主函数运行的时候加载到方法区了
可以调用,但是不能再生成一个新的,
回复 使用道具 举报
、__WSD吴少东 发表于 2013-4-10 23:25
实例的意思就是在对内存中生成对象,当一个类被私有修饰后,该类就在主函数运行的时候加载到方法区了
可 ...

奥,知道了,谢谢哈
回复 使用道具 举报
封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。

另外:私有只在本类中有效...将age私有化以后,类以外即使建立了对象也不能直接访问。但是age所在的类里面的成员可以访问这个age

你把age属性封装了,,值得注意的是封装不等于私有,,,,,私有只是封装的一种方式,,我私有化封装后外面的类是访问不到我的私有属性的,但是这个私有的属性age能被自己的类访问,,此时age是全局变量,,,那么类中的方法haha当然可以访问那个全局变量,,,全局变量时作用于自己整个类的
回复 使用道具 举报
我手心里的宝 发表于 2013-4-10 09:15
如果1个类的构造方法为private,则其他类不能生成类的对象
因为创建new一个对象时,必须调用其构造方法,如 ...

好的,谢谢啦,请问new Person()都做了哪些事的视频是第几天的第几集?
回复 使用道具 举报
余善航 发表于 2013-4-10 09:19
private 修饰成员变量,那么这个变量只在本类中可以直接访问,而外界需要调用该类提供访问的方法来访问 ...

知道了,谢谢啦
回复 使用道具 举报
丘凤光 发表于 2013-4-10 09:23
外部类的方法就不能访问private修饰的本类方法和属性,但是本类中的方法可以使用private修饰的本类的属性。 ...

恩,知道了,谢谢啦
回复 使用道具 举报
蓝色骨头 发表于 2013-4-10 19:59
被private修饰的成员变量或方法对外是不可见的,只能通过类本身公有方法访问。
隐藏类的属性或具体实现方法 ...

知道了,谢谢啦
回复 使用道具 举报
影响力147753321 发表于 2013-4-10 21:12
方法中的变量为局部变量和成员变量重名是可以的。因为其作用范围不一样。其中局部变量会覆盖成员变量。也就 ...

奥奥,晓得了,谢谢了
回复 使用道具 举报
花伟昌 发表于 2013-4-10 22:19
private (私有的)权限修饰的成员,只能在本类中被访问(如果是:public 、protect或默认权限就可以访问到  ...

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