当前位置: 代码迷 >> Java相关 >> java小问题
  详细解决方案

java小问题

热度:198   发布时间:2007-04-09 21:23:44.0

真的不好意思,我还是不懂:
public class TestBook
public static void main(String[] args)
Book book1=new Book();
book1.setBook("C#实用教程","吴军",700);
book1.printBook();
Book book2=new Book("C#语言基础教程","张威",600);
book2.printBook();

你画的这里不是调用class Book类中的setBook(String str1,String str2,int num)
跟void printBook()这两个方法吗?
我画的红色的好像没有调用吧


----------------解决方案--------------------------------------------------------
Book book1=new Book();
这条语句的意思是 创建一个Book类的一个对象 把book1这个引用指向你创建的对象
new Book()是调用Book类的 无参构造器 (也就是说创建对象就是去new 那个类的构造器)

Book book2=new Book("C#语言基础教程","张威",600);
这条语句是使用有参数的构造器去创建对象

我就这么理解! 应该说明白了吧

----------------解决方案--------------------------------------------------------
还是不懂
----------------解决方案--------------------------------------------------------
12楼你说的还不是没有引用
Book(){}
Book(String str1,String str2,int num)
{title=str1;
author=str2;
numsold=num;
}
这两个方法吗?
----------------解决方案--------------------------------------------------------
Book book1=new Book();
这句会调用
Book(){}
Book book2=new Book("C#语言基础教程","张威",600);
这句会调用
Book(String str1,String str2,int num)
这下明白了吧
----------------解决方案--------------------------------------------------------
每次创建对象时都会自动调用它的构造方法
----------------解决方案--------------------------------------------------------

删除哪个都不行的
如果你自己定义了构造函数,java是不会定义默认构造函数的。
而且你的函数里两个构造函数都调用了。


----------------解决方案--------------------------------------------------------
以下是引用心动音符在2007-4-9 23:48:54的发言:
Book book1=new Book();
这句会调用
Book(){}
Book book2=new Book("C#语言基础教程","张威",600);
这句会调用
Book(String str1,String str2,int num)
这下明白了吧

Book book1=new Book();这个不是调用class Book()这外类吗?
而Book book2=new Book("C#语言基础教程","张威",600);不是调用void setBook(String str1,String str2,int num)
这个方法吗?



----------------解决方案--------------------------------------------------------

还是不明白:
请问一下心动音符或者其它高手:
这个Book book1=new Book();不是调用class Book吗?
而Book book2=new Book("C#语言基础教程","张威",600);这个不是调用void setBook(String str1,String str2,int num)
这个方法吗?



----------------解决方案--------------------------------------------------------
12楼你说的还不是没有引用
Book(){}
Book(String str1,String str2,int num)
{title=str1;
author=str2;
numsold=num;
}
这两个方法吗?

这两个方法不就是构造器么! 或者叫构造方法 , 构造函数。要是还没明白就好好看看书上构造方法是什么吧

还是不明白:
请问一下心动音符或者其它高手:
这个Book book1=new Book();不是调用class Book吗?
而Book book2=new Book("C#语言基础教程","张威",600);这个不是调用void setBook(String str1,String str2,int num)
这个方法吗?

它们两个的方法名都不同 怎么能是一个方法呢?
在创建对象的时候 就是在new它的构造方法 如果你自己要是没写构造方法的话 系统默认会给你一个无参数的空方法也就是你写的程序里的Book(){} 你要是自己写了 系统就不会给你这个方法了
但是你在程序里自己写了2个构造方法,所以你在创建对象时就必须用这2个方法中的一个去创建你的对象
你在main方法中两条语句
Book book1=new Book();
Book book2=new Book("C#语言基础教程","张威",600);
是分别使用第一个Book(){}和第二个Book(String str1,String str2,int num){}这两个构造方法去创建对象


----------------解决方案--------------------------------------------------------
  相关解决方案