黑马程序员技术交流社区

标题: 类中的函数格式都不一样呢? [打印本页]

作者: 8047107    时间: 2013-5-16 18:09
标题: 类中的函数格式都不一样呢?
本帖最后由 8047107 于 2013-5-17 10:37 编辑

先看这个,这个是在面向对象的开始讲到,在Car这个类中,车的运行行为直接可以使用void run() {}
好像也没说为什么这么写,我也就是这样记住了

那再看下面的,是一个Person的类,里面第一句public void cry() {}
这个应该跟上面的是一样的把?但是加public有什么不一样吗?
可以用类似下面主函数的语句加个static吗?

作者: SOAR    时间: 2013-5-16 18:19
1l加了public说明这是一个公开的方法,任何类都可以使用它,而不加public的只能在同一个类内和同一个包内使用它。
2当你的方法不需要访问对象的属性时就可以将它定义为静态的。比如说Math类中的各个方法。若你把Car中的run方法前面加一个static,编译的时候就会报错,因为这个方法中访问了这个对象的属性。
作者: 徐启坤    时间: 2013-5-16 18:20
函数前面的修饰符是根据需要以及函数的访问权限加的,
void是函数返回类型,代表没有返回值,这一项是必须有的,也可以是int、String、char等等
public是权限修饰符,根据函数的访问权限来定,还可以是private或是protected等
static是静态修饰符,被static修饰的函数也只能由被static修饰的函数调用

作者: 8047107    时间: 2013-5-16 18:25
尹桥印 发表于 2013-5-16 18:13
1.public是权限修饰符呐。而且还是最大权限,公有
2.不加public和加public是不一样的,前面不加修饰符的话 ...

嗯 回答的又及时又全名。前面两个问题的话加不加public输出效果都一样的把
“方法就可以直接通过类名调用。” 这个是什么意思呢
作者: 8047107    时间: 2013-5-16 18:34
SOAR 发表于 2013-5-16 18:19
1l加了public说明这是一个公开的方法,任何类都可以使用它,而不加public的只能在同一个类内和同一个包内使 ...

第二行回答的我和赞同 但是第一条 给你看个代码
  1. class Car
  2. {
  3.         //描述颜色
  4.         String color = "红色";
  5.         //描述轮胎数
  6.         int num = 4;

  7.         //运行行为。
  8.         void run()
  9.         {

  10.                 System.out.println(color+".."+num);
  11.         }
  12.        
  13. }


  14. class  CarDemo
  15. {
  16.         public static void main(String[] args)
  17.         {
  18.                 //生产汽车。在java中通过new操作符来完成。
  19.                 //其实就是在堆内存产生一个实体。
  20.                 //Car c = new Car();//c就是一个类类型变量。记住:类类型变量指向对象。

  21.                 //需求:将已有车的颜色改成蓝色。指挥该对象做使用。在java指挥方式是:对象.对象成员
  22.                 //c.color = "blue";
  23.                
  24.                 //c.run();

  25.                 //Car c1 = new Car();
  26.                 //c1.run();//red 4;


  27. //                Car c = new Car();
  28. //                c.num = 5;
  29.                 /*
  30.                 new Car().num = 5;
  31.                 new Car().color = "blue";
  32.                 new Car().run();

  33.                 Car c = new Car();
  34.                 c.run();
  35.                 c.num = 4;
  36.                 new Car().run();
  37.                 */
  38.                 //匿名对象使用方式一:当对对象的方法只调用一次时,可以用匿名对象来完成,这样写比较简化。
  39.                 //如果对一个对象进行多个成员调用,必须给这个对象起个名字。
  40.                 //匿名对象使用方式二:可以将匿名对象作为实际参数进行传递。


  41.                 Car q = new Car();
  42.                 show(q);

  43.                 //show(new Car());
  44.         }

  45.         //需求:汽车修配厂。对汽车进行改装,将来的车够改成黑车,三个轮胎。
  46.         public static void show(Car c)
  47.         {
  48.                 c.num = 3;
  49.                 c.color = "black";
  50.                 c.run();
  51.         }
  52. }

复制代码
这个里面void run 没有加public  但是下面的类class CarDemo也可以使用的呢?c.run();
作者: 飞鸟青崖    时间: 2013-5-16 18:43
对于一个函数来说,完全不能省略的只有三个:一个是返回值类型,一个是函数名,一个是函数的参数列表。其余的都可以不写。
除了构造方法外,所有的方法都要有返回值类型,这个类型可以是int,可以是void(比如一个函数执行的是输出操作,那么它的返回值类型是就void)。
函数名,这是必不可少的。不然就没有办法调用它了。
参数列表。空参数也可以看作是有参数的,只不过是参数为空。当你需要外界向这个函数传入一些值的时候,你就可以定义在参数列表上。
方法声明的基本格式是:
返回类型    函数名(形式参数列表)

       ……//方法体内容

在这个基本格式上你可以为它添加相应的修饰符。比如public,static,final,private等。这就是看需要而定了。
作者: SOAR    时间: 2013-5-16 18:51
没加public就是默认的,默认的是在同一个类内和同一个包内可以访问,你虽然没把car和carDemo显示的写在一个包内,但是这在一个文件里,虚拟机会认为它们在一个默认的包里。
作者: 神之梦    时间: 2013-5-16 19:21
楼主先不要郁闷了,加与不加的权限怎样,很快就会学到了
作者: 殇_心。    时间: 2013-5-16 20:34
如果问题已解决,请及时修改分类,否则继续提问,谢谢合作!




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