2021-11-03 Java第一次作业之编写自定义描述图书信息以及学习心得

本博客主要是记录自己的学习心得,不为标准答案哈!

作业要求:

一、按照下面的要求编写程序:
1、编写自定义描述图书信息的 Book 类。将它存放到包 cn.edu.cuc.cs 中。
• 属性包括:书名,作者,出版社名,价格;
• 方法包括:
1) 设置属性的私有访问权限,通过 get、set 方法实现属性的访问。
• 限定价格必须大于 10,如果无效进行提示;
• 思考 this 关键字的作用;//this.author 和 author 分别是什么?
2) 设计构造方法实现对属性赋值
• 复习不同构造方法,不同的实例化对象的方法;
3) 设计信息介绍方法 showInfo ,用来描述图书所有信息;
2、 在 BookTester 类中测试,要求如下图所示。

包 cn.edu.cuc.cs 内Book.java的代码为:

package cn.edu.cuc.cs;

public class Book {
	private String name;
	private String author;
	private String publisher;
	private double price;
	public Book() {}
	public Book(String name,String author,String publisher,double price) {
		this.Setname(name);
		this.Setauthor(author);
		this.Setpublisher(publisher);
		this.Setprice(price);
	}
	public void Setname(String name) {
		this.name=name;
	}
	public void Setauthor(String author) {
		this.author=author;
	}
	public void Setpublisher(String publisher) {
		this.publisher=publisher;
	}
	public void Setprice(double price) {
		if(price>10)
			this.price=price;
		else {
			System.out.println("价格必须大于10元!");
			this.price=0;
		}
	}
	public String Getname() {
		return name;
	}
	public String Getauthor() {
		return author;
	}
	public String Getpublisher() {
		return publisher;
	}
	public double Getprice() {
		return price;
	}
	public void showInfo() {
		System.out.println("书名:"+this.name);
		System.out.println("作者:"+this.author);
		System.out.println("出版社:"+this.publisher);
		System.out.println("价格:"+this.price+"元");
	}
}

BookTester.java的代码为:

import cn.edu.cuc.cs.Book;
public class BookTester {
	public static void main(String args[]) {
		Book book1=new Book("鹿鼎记","金庸","人民文学出版社",120);
		book1.showInfo();
		System.out.println("========================");
		Book book2 = new Book("绝代双骄", "古龙", "中国长安出版社", 55.5);
		book2.showInfo();
	}
}

运行效果为:


二、我的学习小心得

1、abstract关键字的使用

  • 抽象方法不能用private修饰,因为抽象方法必须被子类实现(覆写),也不能用static修饰
  • 抽象类不能使用final关键字修饰不能被实例化(不能new一个抽象类),抽象类中可以有构造方法、实例方法,并实现业务逻辑(类比接口中不能有实例方法去实现业务逻辑)
  • 如果一个类中至少有一个抽象方法,那么这个类一定是抽象类,但抽象类中不一定有抽象方法,如果一个类继承了一个抽象类,那么它必须全部覆写抽象类中的抽象方法,若不全部覆写,则这个子类也必须是抽象类
  • 抽象类通过方法的覆盖来实现多态

2、static修饰的静态变量(类变量)的用法

  • 静态变量属于整个类所有,而不是某个对象所有,即被类的所有对象所共享。静态成员可以使用类名直接访问,也可以使用对象名进行访问。不管是使用类名还是对象名进行访问都可以改变其值
  • 静态方法(即有static修饰的方法)中可以直接调用同类中的静态成员,但不能直接调用非静态成员或方法,如果希望在静态方法中调用非静态变量或方法,可以通过创建类的对象,然后通过对象来访问非静态变量或方法
  • 普通成员方法中,则可以直接访问同类的非静态变量和静态变量
  • 静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量

3、final关键字的使用

  • 当用final修饰一个时,表明这个类不能被继承,final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会被隐式地指定为final方法,final方法不能被子类覆盖,但可以被子类继承
  • 当用final修饰一个方法时,可以把方法锁定,以防任何继承类修改它的含义,而且效率高
  • 当用final修饰一个变量时,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改,如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象

本次记录就到这~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值