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

© 8047107 高级黑马   /  2013-5-16 18:09  /  1757 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 8047107 于 2013-5-17 10:37 编辑

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

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

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

10 个回复

倒序浏览
1l加了public说明这是一个公开的方法,任何类都可以使用它,而不加public的只能在同一个类内和同一个包内使用它。
2当你的方法不需要访问对象的属性时就可以将它定义为静态的。比如说Math类中的各个方法。若你把Car中的run方法前面加一个static,编译的时候就会报错,因为这个方法中访问了这个对象的属性。
回复 使用道具 举报
函数前面的修饰符是根据需要以及函数的访问权限加的,
void是函数返回类型,代表没有返回值,这一项是必须有的,也可以是int、String、char等等
public是权限修饰符,根据函数的访问权限来定,还可以是private或是protected等
static是静态修饰符,被static修饰的函数也只能由被static修饰的函数调用
回复 使用道具 举报
尹桥印 发表于 2013-5-16 18:13
1.public是权限修饰符呐。而且还是最大权限,公有
2.不加public和加public是不一样的,前面不加修饰符的话 ...

嗯 回答的又及时又全名。前面两个问题的话加不加public输出效果都一样的把
“方法就可以直接通过类名调用。” 这个是什么意思呢
回复 使用道具 举报
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();
回复 使用道具 举报
对于一个函数来说,完全不能省略的只有三个:一个是返回值类型,一个是函数名,一个是函数的参数列表。其余的都可以不写。
除了构造方法外,所有的方法都要有返回值类型,这个类型可以是int,可以是void(比如一个函数执行的是输出操作,那么它的返回值类型是就void)。
函数名,这是必不可少的。不然就没有办法调用它了。
参数列表。空参数也可以看作是有参数的,只不过是参数为空。当你需要外界向这个函数传入一些值的时候,你就可以定义在参数列表上。
方法声明的基本格式是:
返回类型    函数名(形式参数列表)

       ……//方法体内容

在这个基本格式上你可以为它添加相应的修饰符。比如public,static,final,private等。这就是看需要而定了。

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

回复 使用道具 举报
SOAR 中级黑马 2013-5-16 18:51:32
7#
没加public就是默认的,默认的是在同一个类内和同一个包内可以访问,你虽然没把car和carDemo显示的写在一个包内,但是这在一个文件里,虚拟机会认为它们在一个默认的包里。
回复 使用道具 举报
楼主先不要郁闷了,加与不加的权限怎样,很快就会学到了
回复 使用道具 举报
如果问题已解决,请及时修改分类,否则继续提问,谢谢合作!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马