黑马程序员技术交流社区

标题: 权限私有的小问题 [打印本页]

作者: 于潇    时间: 2012-4-27 17:32
标题: 权限私有的小问题
有个问题一直很不明白,如果一个对象被private修饰,那么,这个对象是在被修饰之后默认就有了get和set方法,还是需要对外提供get和set方法呢?

作者: 张卯    时间: 2012-4-27 17:41
private只能用来修饰成员吧,get和set是自己写的~
作者: 杨志    时间: 2012-4-27 17:47
get()和set()方法需要自己写的!但是你也可以去规定他们的权限。如
  1. public void setName(String name){
  2. return this.name;
  3. }
复制代码
只能说对象被private 了,那么别人将不能直接调用它。
作者: 张文建    时间: 2012-4-27 18:07
private 修饰的只有本类可以 ,一般都要提供 get 和set 方法  这样其他类调用 get,set方法去修改。
private class Demo{
   //这样的话,Demo类就是私有的了.
   //  请注意 类是不能用private修饰的,
   //  当类被修饰成private没有任何意思.
   // 因为外部任何对象都访问不到Demo类了.

    private String str;
//这样的话 str属性就私有的了
//外部类就访问不到这个属性了

    private void hello(){
  //这样的话外部类就访问不到hello()方法了
  //比如你肯定希望你有些私有的东西
  //用常人的思想去理解java oop
   }
}
//用private关键字:使得你的程序更安全
//变量一般都是用private申明
//然后再本类通过 set get 方法控制该属性
作者: 马浩    时间: 2012-4-27 18:08
被private修饰的变量或方法是不能直接被其他类中new出的对象调用的,就像下面的小程序
class  Test1
{
        public static void main(String[] args)
        {
                Person p=new Person();
               
               
                //p.speak();//对象p是不能直接调用speak()方法的,因为speak()方法被private修饰了               
p.show();//对象p可以调用没被private修饰的show()方法,再通过show()方法去调用speak()方法
        }
}
class Person
{
         static String name="liudehua";
         static int age=20;
        private static void speak()
        {
                System.out.println("name: "+name);
                System.out.println("age: "+age);
        }

        public static void show()
        {
                speak();
        }
}
作者: 马浩    时间: 2012-4-27 18:11
  所以get和set方法是自己对外提供的
作者: 一生一世    时间: 2012-4-27 19:11
上面的朋友总结的很对,private 是一个类自身私有的东西,不希望被别的类访问,如果是成员变量用private修饰,那么别的类要想访问到他,就只能调用它的get和set方法,如果修饰成员方法,那么别的类就不能访问该方法,这样的方法只能被本类自己调用,总结一下就是:
(1)、private是类访问权限,类通过private把本类中不想被别的类看到的东西封装起来,外部的类只能调用非private修饰的成员。
(2)、private是java面向对象思想的一种体现,类封装类本身的私有成员,它只为外部提供公开的成员,内部具体是如何具体实现和定义的不需要管,只管调用方法和成员 量即可。其他的权限这里就不必多说了(这是我个人理解,如果有错误的地方请谅解!谢谢)
作者: prospect    时间: 2012-4-27 21:16
修饰符private只是用来修饰其权限,而对其的操作方法set和get是需要自己去写的。
作者: 孙天    时间: 2012-4-27 21:35
set和get是对外提供的访问方式,而private是用来修饰权限的,确切的说被私有了只有本类知道这个属性存在,外面全都不知道,所以访问不到,要想访问就必须对外提供访问方式,所以写了set和get方法
作者: 黑马等我!    时间: 2012-4-27 23:51
在本类中一个对象被加private私有后,目的是不让其他类创建它的对象;在其他类中就不能创建被私有的那个对象。如果其他类中要调用到被private私有的对象的方法,就只能通过间接访问对象的方法。也就对外提供了set,get的方法让其类访问到该对象
作者: 亚男    时间: 2012-4-28 01:24
是对象的变量被修饰后可以对外提供get/set方法也可以不提供和private修不修饰没关系,public照样可以写,只不过写了get/set方法可以当javabean来操作
作者: 于潇    时间: 2012-4-28 08:49
好像大多数人没有明白我的问题哟
作者: xiwangliujiao    时间: 2012-4-28 10:44
是需要额外提供的,如果不提供get和set方法,外界是不能访问到的,只能在类内部访问,同时这也是封装的一大特点,保住了数据的安全性,
作者: 邵中国    时间: 2012-4-28 15:56
private私有变量是不让你外部的随便访问和修改类的变量,
但你可以通过该类提供的set和get方法去修改和获取,
既安全又可调用,当然方法得自己生成
作者: 李蛟龙    时间: 2012-4-28 16:06
不是默认就有了
是根据需求,来提供get和set方法
private是面向对象特征中封装性的体现,它修饰的属性是为防止外界随意访问和修改。但是例如为了程序员以后开发利用,会在类中提供get和set方法,这需要编写代码时敲出来。




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