黑马程序员技术交流社区

标题: 一个构造方法的小问题 [打印本页]

作者: 宋旭东    时间: 2013-7-4 16:59
标题: 一个构造方法的小问题

作者: mo﹎雲℡    时间: 2013-7-4 20:25
我来回答你的问题。
首先你定义私有对象是:2.private String color;
                                    3.private String num;
然后你的构造方法是:4.Car(){
                                5.    int num=4;
                                6.    String color="red";
                                7.}
你的问题:1,构造方法中你又重新定义了num和color两个属性值。和你前面的定义私有对象重复了。
          2,你的静态方法:12.static void run(Car a){
                                           13.System.out.print(a.num+","+a.color);
                                           14.}
                    调用的是ca类中的私有对象。你的构造方法没有初始化里面的值。所以结果你: 0,null
改进的代码:
  1. public class Car {
  2.         private String color;
  3.         private int num;
  4.         Car(){
  5.                 num = 4;
  6.                 color = "red";
  7.         }
  8.         static void run(Car a){
  9.                 System.out.println(a.num+","+a.color);
  10.         }
  11.         public static void main(String[] args) {
  12.                 Car ca = new Car();
  13.                 run(ca);
  14.         }
  15. }
复制代码

作者: 王洪波    时间: 2013-7-4 20:38
  1. public class Car
  2. {
  3.         private String color;
  4.         private String num;

  5.         Car()
  6.         {       
  7.                 /*
  8.                 int num = 4;//这里的num是局部变量,而非你定义的成员变量,其作用域范围只是在大括号内,出了大括号便失效
  9.                 String color = "red";//理由同上
  10.                 */
  11.                 //改为:
  12.                 this.num = "4";
  13.                 this.color = "red";
  14.         }

  15.         public static void main(String args[])
  16.         {
  17.                 Car ca = new Car();
  18.                 run(ca);
  19.         }

  20.         static void run(Car a)
  21.         {
  22.                 System.out.print(a.num + "," + a.color);
  23.         }
  24. }
复制代码

作者: 孙四有    时间: 2013-7-7 00:47
2:写成private int num;你试试。12:void run()写在class Car 里。不需要static。建议先把顺序写成类--属性--方法--主函数--调用类方法。你再看看
作者: 在乎..    时间: 2013-7-11 19:40
Car(){
int num=4;
String color="red";
}
首先1.private String num 写错了吧,应该为int ;
2.这里定义与类相同局部变量,是名字相同而已,地址改变了,如果要引用本类的是
this.num = 4;
this.color = "red";
才正确。




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