黑马程序员技术交流社区

标题: 实际结果和预期结果不一致啊~ 关于this关键字的 [打印本页]

作者: 蒋昌宏    时间: 2012-2-17 13:19
标题: 实际结果和预期结果不一致啊~ 关于this关键字的
本帖最后由 蒋昌宏 于 2012-2-17 13:21 编辑

class Person{
        public void print(){
                System.out.println(this.prepaid) ;
                System.out.println(this.postpaid) ;
                System.out.println(this.hybrid) ;
        }
        private String postpaid ;
        private String hybrid ;
        private String prepaid ;
        public Person(){
                System.out.println("新的对象产生了!") ;
        }       
                public Person(String postpaid){
                        this();
                        this.postpaid = postpaid ;
                        System.out.println("新的对象产生了!!") ;
                }
                public Person(String postpaid,String hybrid){
                        this(postpaid);
                        this.hybrid = hybrid;
                        System.out.println("新的对象产生了!!!") ;
                }
        public Person(String postpaid,String hybrid,String prepaid){
                        this(hybrid);
                        this.prepaid = prepaid;
                        System.out.println("新的对象产生了!!!!") ;
                }
        public void function(Person temp){
                temp.postpaid = "后付费";
                temp.hybrid = "混合付费";
                temp.prepaid = "预付费";
                }

        public void setPostpaid(String postpiad){
                        this.postpaid = postpaid;
                }
        public String getPostapid(){
                  return this.postpaid;
                }
        public void setHybrid(String hybrid){
                        this.hybrid = hybrid;
                }
        public String getHybrid(){
                  return this.hybrid;
                }
        public void setPrepaid(String prepaid){
                        this.prepaid = prepaid;
                }
        public String getPrepaid(){
                  return this.prepaid;
                }
};
public class Boss{
        public static void main(String args[]){
                Person per = new Person() ;
                per.function(per);
                per.print() ;
               
         Person per0 = new Person("") ;
                per.function(per0);
                per.print() ;
               
          Person per1 = new Person("","") ;
                per.function(per1);
                per.print() ;
               
                Person per2 = new Person("","","") ;
                per.function(per2);
                per.print() ;

        }
};


实际结果打印出来是:
新的对象产生!
预付费
后付费
混合付费
新的对象产生!
新的对象产生!!
预付费
后付费
混合付费
新的对象产生!
新的对象产生!!
新的对象产生!!!
新的对象产生!!!
预付费
后付费
混合付费
新的对象产生!
新的对象产生!!
新的对象产生!!!!
预付费
后付费
混合付费


预期结果是:
新的对象产生!
预付费
后付费
混合付费
新的对象产生!
新的对象产生!!
预付费
后付费
混合付费
新的对象产生!
新的对象产生!!
新的对象产生!!!
预付费
后付费
混合付费
新的对象产生!
新的对象产生!!
新的对象产生!!!
新的对象产生!!!!
预付费
后付费
混合付费

作者: 刘基军    时间: 2012-2-17 13:41
public Person(String postpaid,String hybrid,String prepaid){
                        this(postpaid,hybrid); //该构造函数这边少加了个参数
                        this.prepaid = prepaid;
                        System.out.println("新的对象产生了!!!!") ;
                }
作者: 蒋昌宏    时间: 2012-2-17 18:28
刘基军 发表于 2012-2-17 13:41
public Person(String postpaid,String hybrid,String prepaid){
                        this(postpaid,h ...

谢了,原来要这么加




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