进入QUANTA 安卓端Java第一个作业(向日葵姐姐手把手教记录

编写一个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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值