黑马程序员技术交流社区

标题: 求大神大婶们帮我分析一下 [打印本页]

作者: 张伟明    时间: 2013-5-26 13:49
标题: 求大神大婶们帮我分析一下
本帖最后由 张伟明 于 2013-5-28 22:22 编辑
  1. class FunctionDemo02
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int sun = getSun();  //小括号中为什么不放置参数类型和参数个数?
  6.                
  7.                 System.out.println("sun="+sun);
  8.         }


  9.         
  10.         
  11.         public static int getSun()  //小括号中为什么不放置参数类型和参数个数?
  12.         {
  13.                 return 3+4;
  14.         }
  15. }

复制代码
参数是不是就是用户的需求?我们不知道的变量?
作者: 喜欢流浪    时间: 2013-5-26 14:00
public static int getSun()  //小括号中为什么不放置参数类型和参数个数?
这得看你当初定义这个函数时候,是怎么想的,初衷是要做什么。
很明显,你这个函数根本不需要未知内容参与运算啊!返回值固定,且定值!所以不放参数类型和参数个数!
不知道有没有回答道你呢!
作者: 李德全    时间: 2013-5-26 14:15
定义的时候括号有,你调用的时候就要有。定义没有,使用也没有。
作者: 张伟明    时间: 2013-5-26 14:16
喜欢流浪 发表于 2013-5-26 14:00
public static int getSun()  //小括号中为什么不放置参数类型和参数个数?
这得看你当初定义这个函数时候 ...

就是说参数是未知的。根据别人(用户)的需求而定。才会在括号中写参数?是嘛?
作者: 黄丽军    时间: 2013-5-26 14:23
参数就是变量,如果函数有参数的话,会在调用函数时将参数的具体值压入函数调用栈里面去参与运算。我是这样理解的
作者: 王靖远    时间: 2013-5-26 14:31
class FunctionDemo02
{
        public static void main(String[] args)
        {
                int sun = getSun();  //小括号中为什么不放置参数类型和参数个数?//你定义的方法没有参数,调用方法自然不能传参数。
               
                System.out.println("sun="+sun);
        }


        
        
        public static int getSun()  //小括号中为什么不放置参数类型和参数个数?你这个方法中用不到参数,你放参数做什么?
        {
                return 3+4;
        }
}

作者: 王瀛    时间: 2013-5-26 14:43
Java中不像其他某些编程语言有“属性访问器”,所以一般对于被private修饰的成员变量使用setXXX()和get()XXX进行设置和获取。

其中setXXX()方法由于仅仅是对变量进行设置,所以一般不需要返回值。但是设置哪个变量是需要声明的,所以有参数列表;

而getXXX()方法是用来获取设置好的变量的值,所以是有返回值类型的,并且这个返回值类型是与你所要获取的参数类型一致的。return的值由于是同一类中的成员变量,所以return语句中省略了"this."
  1. class Person//定义Person类
  2. {
  3.         private int age;//年龄是私有(专有)属性,不对外提供,使用private修饰
  4.         public void setAge(int age)//由于age不直接对外提供(暴露),所以定义set方法对其进行间接设置,并使用一些条件语句对年龄值进行限制,避免出现非自然的情况
  5.         {
  6.                 if (age>=0 && age<=130)
  7.                 {       
  8.                         this.age = age;
  9.                         this.show();
  10.                 }
  11.                 else
  12.                         System.out.println("输入了不可能的年龄值");
  13.         }
  14.         public int getAge()//由于age不直接对外提供,但是我们仍需要访问这个成员变量。使用get方法间接访问,注意返回值类型
  15.         {
  16.                 return this.age;
  17.         }
  18.         private void show()//定义一个展示年龄值的方法,此方法不用对外提供,使用private修饰即可
  19.         {
  20.                 System.out.println("年龄是"+this.age);
  21.         }
  22. }
  23. class  GetAgeDemo
  24. {
  25.         public static void main(String[] args)
  26.         {
  27.                 Person p01 = new Person();//创建两个实例化对象
  28.                 Person p02 = new Person();
  29.                 p01.setAge(-40);//调用set方法
  30.                 //p01.getAge();
  31.                 p02.setAge(18);
  32.                 //p02.getAge();
  33.         }
  34. }
复制代码

作者: zjd    时间: 2013-5-26 14:57
张伟明 发表于 2013-5-26 14:16
就是说参数是未知的。根据别人(用户)的需求而定。才会在括号中写参数?是嘛? ...

你的意思我不大明白。算了给你举个例子,例如你要计算多个不同的长方形的面积,你做了一个专门求长方形的面积的函数,因为每个长方形的长和宽都是不同的,因此可以在函数中传入长和宽这两个参数,而对于你上面的题,输出是固定的,不管你传入什么参数,你的返回值都是7,因此你没必要传参数。如果你非要传也对,没有语法错误,只是一般人不会这样干,因为那叫没事找事,呵呵呵你说是不是,这下应该明白了吧
作者: 喜欢流浪    时间: 2013-5-26 15:12
张伟明 发表于 2013-5-26 14:16
就是说参数是未知的。根据别人(用户)的需求而定。才会在括号中写参数?是嘛? ...

还是那句话,你的出发点是什么,是要得到4+3  是个定值,所以不需要参数!
你的说法也对!
作者: 张伟明    时间: 2013-5-26 15:41
王瀛 发表于 2013-5-26 14:43
Java中不像其他某些编程语言有“属性访问器”,所以一般对于被private修饰的成员变量使用setXXX()和get()XX ...

哥们儿。你打开方式错了吧  :shutup:
作者: 王瀛    时间: 2013-5-26 15:52
张伟明 发表于 2013-5-26 15:41
哥们儿。你打开方式错了吧

什么打开方式。。




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