编写一个Book类,有以下要求:
1.有私有属性:书名、作者、价格
2.有方法bookInfo():输出书名、作者、价格
3.私有属性要有对应的getter和setter
4.自定义一个带有全部参数的构造方法
5.main函数中至少实例化两个对象,其中一个用set方法设置属性并调用bookInfo()打印信息;另一个利用构造方法传入参数并调用bookInfo()打印信息
class Book{
private String name ;
private String author;
private int price;
//构造方法:和类同名,没有返回值的方法,在每次实例化的时候被调用
//无参构造方法
//每次实例化都要用,可是刚才我没写这个构造方法为什么也可以?
//因为如果你不写自己的构造方法,程序会自动帮你加一个无参构造方法,你看不见而已
//类永远只是一个模板,在类里是不会有具体的数值的
//只有实例化出的对象,对象的属性需要赋值具体的数值
//类中的方法我只知道数据类型,不知道会传进来什么数值,所以我给这个数值一个暂时的名称
//参数是从外面传进来的,在这个方法里面我把外面传进来的参数赋值给了属性
//当有多个构造方法,你在main中进行实例化的时候,程序需要知道它应该调用哪个构造方法
//它判断的依据就是参数,包括参数的个数、参数的数据类型
//所以程序会根据你的参数,选择对应的构造方法 那以后都需要写两个嘛 一个有参一个没有
//这种情况比较多见,不过也不一定。这个是要看程序的需求。有可能我实例化的时候不需要给他值,那我就不写,用程序默认的无参
//有时候有很多参数,比如我们有三个,那么可以写四个构造方法,无参、一个参数、两个参数、三个参数。根据需求灵活调整就行了 ok
public Book() {
}
public Book(String bookName, String bookAuthor, int bookPrice) {//现在写一个有参数的 为什么报错 这里就是在类里面写构造方法 对 okk
name = bookName;
author = bookAuthor;
price = bookPrice;
System.out.println();//这个删了会有影响吗 这一行不会的,只是用来作为一个提示,表示执行了这个构造方法增加程序可读性嗯嗯
}
public void bookInfo() {
System.out.print("书名:"+name+";作者:"+author+";价格:"+price);
}
public void setName(String bookName) {
name = bookName;
}
public String getName() {
return name;
}
public void setAuthor(String bookAuthor) {
author = bookAuthor;
}
public String getAuthor() {
return author;
}
public void setPrice(int bookPrice) {
price = bookPrice;
}
public int getPrice() {
return price;
}
}
public class Homework { //这个叫主类,和文件同名的,建议不要在这里定义类,建议只写main函数
public static void main(String[] args) { //这个就是main呀是的,所以你这样就很好 噢噢刚刚我理解错了然后 构造方法的话就是上面
//程序向下执行,到实例化这里,跳转到类的构造方法,回来继续向下执行
//定义完一个类后,主程序要实例化出类的对象。题目要求两个对象,一个用set设置属性,一个用构造方法设置属性
//这个对象用无参构造方法,set设置属性
Book book = new Book(); //这里报错,因为自己写了构造方法后程序不会自动帮你创建,而我们只写了有参的构造方法,所以程序找不到这个无参的构造方法
//这样的话是不是两个方法都用到了两个构造方法吗对 嗯,所以要定义两个 set 直接在主类里定义对吧 是在你的对象的类里定义
book.setName("挪威的森林"); //为了不报错我们需要再写一个无参的构造方法
book.setAuthor("村上春树");
book.setPrice(40);
book.bookInfo();
//正常打印说明成功了
Book bookTwe= new Book("瓦尔登湖","梭罗",45);
bookTwe.bookInfo();// 再定义一个对吧 嗯
//定义第二个对象,用构造方法设置属性,不需要调用set方法
//我试试
//那现在能把这个完成不 这个不是这样就完成了吗
//要两个对象你只设置了一个哇 所以还是要再弄一个对象 然后再用两个方法 不是,一个对象用的无参构造方法,然后用set设置
//另一个用有参的构造方法设置,就不需要set了 emmmmm没搞懂。。。
}
}//那没什么问题了o okokok 这个无参的是指set吗 这句话是调用无参构造方法时候,在类中无参构造方法中写的 我知道这个 我是说
//set设置和构造方法是平级的,可以这么理解,但是要注意的是实例化类,一定有这一句,所以构造方法是一定会调用的
//set作为一个方法,它的调用是看需求的,不需要就可以不要,比如我们已经用构造方法设置好属性了,就不需要set再设置了,所以第二个类没有用set方法 知道嘞
//所以这就完成了吧 对,第一个作业就做好了
//我去看看你的第二个作业
//okk