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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 回忆初中时候 中级黑马   /  2014-1-5 01:38  /  1657 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class tong
{
        private String author;
        private String title;
        private int piece;
        public tong(String author,String title,int piece)
        {
                System.out.println("书名:"+this.author);
                System.out.println("作者:"+this.title);     //构造函数里可以有这些语句的存在吗?
                System.out.println("价格:"+this.piece);
        }
        public static void main(String[] args)
        {
                tong t1=new tong("林","JAVA人门",50);
                t1.tong();    //这里出现了错误
        }
}
请指教。。。谢谢

14 个回复

倒序浏览
本帖最后由 DOOR 于 2014-1-5 02:42 编辑
  1. public class Tong//1类名首字母要大写
  2. {
  3.         private String author;
  4.         private String title;
  5.         private int piece;
  6.         public Tong(String author,String title,int piece)//构造函数名和类名要一模一样
  7.         {
  8.                 System.out.println("书名:"+this.author);
  9.                 System.out.println("作者:"+this.title);     //可以语法上没有问题,继续往下面学,这些问题自然就懂了
  10.                 System.out.println("价格:"+this.piece);
  11.         }
  12.         public static void main(String[] args)
  13.         {
  14.                 Tong t1=new Tong("林","JAVA人门",50);
  15.                 //t1.tong();    //这句话不需要写,构造函数自动加载
  16.         }
  17. }
复制代码
回复 使用道具 举报
class tong
{
        private String author;
        private String title;
        private int piece;
        public tong(String author,String title,int piece)
        {
                this.author=author;
                this.title=title;     //构造函数里可以有这些语句的存在吗?
            this. piece=piece;
        }
        public void show (){
                System.out.println(author+title+piece);
        }
      
               
}
class Dmeo {
        public static void main(String[] args)  {
               

         tong t1=new tong("林","JAVA人门",50);
       t1.show();    //这里出现了错误
      
        }
}
回复 使用道具 举报
class tong
{
        private String author;
        private String title;
        private int piece;
        public tong(String author,String title,int piece)
        {
                this.author=author;
                this.title=title;     //构造函数里可以有这些语句的存在吗?  这句话可以存在
            this. piece=piece;
        }
        public void show (){
                System.out.println(author+title+piece);
        }
      
               
}
class Dmeo {
        public static void main(String[] args)  {
               

         tong t1=new tong("林","JAVA人门",50);
       t1.show();    //这里出现了错误    这里没有错误,你的执行函数类名是Dmeo 不是Demo 。
      
        }
}//你的文件名最好与你的执行类名相同。javac(编译) 后面执行的是你的文件名
//java(执行)后面是你的执行类名。
回复 使用道具 举报
public class tong
{
         private String author;
         private String title;
         private int piece;
         public tong(String author,String title,int piece)
         {
                 System.out.println("书名:"+this.author);
                 System.out.println("作者:"+this.title);     //构造函数里可以有这些语句的存在吗?
                 System.out.println("价格:"+this.piece);
         }
         public static void main(String[] args)
         {
                 tong t1=new tong("林","JAVA人门",50);
                 t1.tong();    //这里出现了错误
         }
}

错误在System.out.println("书名:"+this.author);
                 System.out.println("作者:"+this.title);     //构造函数里可以有这些语句的存在吗?
                 System.out.println("价格:"+this.piece);
this代表当前类,也就是tong这个类,author,title和piece只是在类中声明了!并无初始化!在构造函数中也没有赋值,所以调用的时候当然会出错!
解决办法有两种:
第一:可以把this去掉
第二:可以在构造函数用传入的值来初始化this.author = author; ....
回复 使用道具 举报
第一类名要大写。第二初始化的时候没有赋值。第三函数一被调用构造函数就被读取了,不能再调用。
回复 使用道具 举报
  1. package com.itheima;
  2. public class tong
  3. {
  4.         private String author;
  5.         private String title;
  6.         private int piece;
  7.         public tong(String author,String title,int piece)
  8.         {
  9.                 System.out.println("书名:"+this.author);
  10.                 System.out.println("作者:"+this.title);     //构造函数里可以有这些语句的存在吗?
  11.                 System.out.println("价格:"+this.piece);
  12.         }
  13.         public static void main(String[] args)
  14.         {
  15.                 tong t1=new tong("林","JAVA人门",50);
  16.                /* t1.tong();    //这里出现了错误
  17. */        }
  18. }
复制代码
楼主,你类名的首字母一定要大写,构造函数是可以存在system.out.println();语句的,这个和在不在构造函数里面没有任何的关系,t1.tong();出现错误的原因很简单,构造函数是创建对象的时候使用的,不是创建对象以后才会被调用,这个你一定要好好的看下毕姥爷的视频,会给你带来好多收获的,加油
回复 使用道具 举报
public class tong
{
         private String author;
         private String title;
         private int piece;
         public tong(String author,String title,int piece)
         {
                 System.out.println("书名:"+this.author);
                 System.out.println("作者:"+this.title);     //构造函数里可以有这些语句的存在吗?
                System.out.println("价格:"+this.piece);
         }
         public static void main(String[] args)
         {
                 tong t1=new tong("林","JAVA人门",50);
                 t1.tong();    //这里出现了错误
        }
}

这里的错误很明显是,你在创建对象时已经使用了带参数的构造函数,就不能通过类对象来调用了,还有一点小知识点:当你添加了带参数的构造函数是,系统不会自动添加无参数的构造函数,所以一般写程序是都需要手动添加上去
回复 使用道具 举报
你的值传递到构造方法,但你的类的成员变量没有接收到你传递的值,你没有把值传递给成员变量
构造方法里面还应有这样的语句
this.author=author;
this.title=title;  
this. piece=piece;
构造方法,是特殊的方法,拥有普通方法的属性,当然可以定义你写的那些输出语句
回复 使用道具 举报
周水林 发表于 2014-1-5 10:08
楼主,你类名的首字母一定要大写,构造函数是可以存在system.out.println();语句的,这个和在不在构造函数 ...

:)谢谢 请问为什么不能再调用它呢?:)
回复 使用道具 举报
小悠久 发表于 2014-1-5 08:56
public class tong
{
         private String author;

谢谢。
我把this去掉后,在t1.tong();这里还是有错误。请问 是为什么?
回复 使用道具 举报
回忆初中时候 发表于 2014-1-5 17:35
谢谢 请问为什么不能再调用它呢?

t1本身就是实例化了的对象,实例化对象就是通过构造函数来执行的,那么你想一想,一个已经实例化了的对象还可以去调用这个构造函数么,你只能调用这个对象的其他方法
回复 使用道具 举报 1 0
周水林 发表于 2014-1-5 17:40
t1本身就是实例化了的对象,实例化对象就是通过构造函数来执行的,那么你想一想,一个已经实例化了的对象 ...

:)谢谢 懂了
回复 使用道具 举报

不客气,好好看基础视频吧
回复 使用道具 举报
小伙子,你要走的路还有很远啦
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马