一、抽象类的概念 。
1、抽象方法没有方法体。
2、抽象类不可以实类化。
3、继承一个抽象类,必须要实现抽象类中的方法,除非子类也是抽象类。
二、抽象方法。
是一个模板或约束,避免子类的随意性,需要实现它的类必须要重写它的抽象方法。
三、图书管理系统
package com.ruanjian174.www;
/**
* 图书管理系统
*/
import java.util.ArrayList;
import java.util.Scanner;
public class Library {
private static ArrayList<Book> bookList = new ArrayList<>();// 实例化
private static ArrayList<EBook> ebookList = new ArrayList<>();
private static ArrayList<Magazine>magazineList = new ArrayList<>();
private static int n;
public static void main(String[] args) {
init();
do {
listMenu();
} while (n != 0);
System.out.println("程序退出");
}
private static void init() {
Book b1=new Book("三國演義", 52.6, 900, "中國書社", "羅貫中");
Book b2=new Book("水滸傳", 62.6, 900, "中國書社", "施耐庵");
Book b3=new Book("西遊記", 52.6, 600, "中國書社", "吳承恩");
Book b4=new Book("紅樓夢", 52.6, 700, "中國書社", "曹雪晴");
bookList.add(b1);
bookList.add(b2);
bookList.add(b3);
bookList.add(b4);
EBook e1 = new EBook("聚生", 2.1, 3, 5, "坑神出售");
EBook e2 = new EBook("大主宰", 2.1, 3, 5, "天蠶土豆");
EBook e3 = new EBook("逆天", 2.1, 3, 5, "唐家三少");
ebookList.add(e1);
ebookList.add(e2);
ebookList.add(e3);
}
/*
* 列出所有图书
*/
private static void listAllBook() {
for (Book book : bookList) {
System.out.println("书名:" + book.getName() + ",出版社:" + book.getPublish() + ",作者:" + book.getAuthor() + ",页数:"
+ book.getPages() + ",价格:" + book.getPrice());
}
// 列出所有电子书
for (EBook ebook : ebookList) {
System.out.println("书名:" + ebook.getName() +",作者:" + ebook.getAuthor() + ",页数:"
+ ebook.getPages() + ",价格:" + ebook.getPrice()+",下载次数"+ebook.getDownloadTimes());
}
// 列出所有杂志
for (Magazine magazine : magazineList) {
System.out.println("书名:" + magazine .getName() + ",页数:"
+ magazine .getPages() + ",价格:" + magazine .getPrice()+",发行"+ magazine.getIssue());
}
}
/*
* 添加图书
*/
private static void addBook() {
System.out.println("请选择您要添加的图书类型:1.Book;2.EBook;3.Magazine");
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
switch (n) {
//纸质书
case 1:
System.out.println("请输入书名:");
sc.nextLine();
String name = sc.nextLine();
System.out.println("请输入出版社:");
String publish = sc.nextLine();
System.out.println("请输入作者:");
String author = sc.nextLine();
System.out.println("请输入页数:");
int pages = sc.nextInt();
System.out.println("请输入价格:");
double price = sc.nextDouble();
// 创建一个Book对象
Book book = new Book(name, price, pages, publish, author);
// 添加到ArrayList中
bookList.add(book);
break;
//电子书
case 2:
System.out.println("请输入电子书名:");
sc.nextLine();
String ename = sc.nextLine();
System.out.println("请输入作者:");
String eauthor = sc.nextLine();
System.out.println("请输入页数:");
int epages = sc.nextInt();
System.out.println("请输入价格:");
double eprice = sc.nextDouble();
// 创建一个eBook对象
EBook ebook = new EBook(ename, eprice, epages, 0, eauthor);
// 添加到ArrayList中
ebookList.add(ebook);
break;
//杂志
case 3:
System.out.println("请输入杂志名:");
sc.nextLine();
String magazinename = sc.nextLine();
System.out.println("请输入页数:");
int magazinepages = sc.nextInt();
System.out.println("请输入发布次数:");
int magazineissue = sc.nextInt();
System.out.println("请输入价格:");
double magazineprice = sc.nextDouble();
// 创建一个magazine对象
Magazine magazine =new Magazine(magazinename, magazineprice, magazinepages, null);
// 添加到ArrayList中
magazineList.add(magazine);
break;
default:
break;
}
}
// 代码复用
// 好处:1.简化代码 2.一处修改,处处修改
private static void listMenu() {
System.out.println("******欢迎使用本图书管理系统*****");
System.out.println("******1.查看图书*****");
System.out.println("******2.新增图书*****");
System.out.println("******3.删除图书*****");
System.out.println("******4.检索图书*****");
System.out.println("******0.退出系统*****");
System.out.println("请进行你的操作");
Scanner scanner = new Scanner(System.in);
n = scanner.nextInt();
System.out.println("您选择的序号是:" + n);
switch (n) {
case 1:
listAllBook();
break;
case 2:
addBook();
break;
case 3:
break;
case 4:
searchBook();
break;
default:
break;
}
}
/**
* 检索图书
*/
private static void searchBook() {
System.out.println("请输入你要查询的关键字");
Scanner sc = new Scanner(System.in);
String keywords=sc.nextLine();
System.out.println("您输入的关键字是:"+keywords+",我们为您找到了下列图书");
for (Book book : bookList) {
if(book.getName().indexOf(keywords)>=0) {
System.out.println("书名:" + book.getName() + ",出版社:" + book.getPublish() + ",作者:" + book.getAuthor() + ",页数:"
+ book.getPages() + ",价格:" + book.getPrice());
for (EBook ebook : ebookList) {
if(ebook.getName().indexOf(keywords)>=0) {
System.out.println("书名:" + ebook.getName() +",作者:" + ebook.getAuthor() + ",页数:"
+ ebook.getPages() + ",价格:" + ebook.getPrice()+",下载次数"+ebook.getDownloadTimes());
for (Magazine magazine : magazineList) {
if(magazine.getName().indexOf(keywords)>=0) {
System.out.println("书名:" + magazine .getName() + ",页数:"
+ magazine .getPages() + ",价格:" + magazine .getPrice()+",发行"+ magazine.getIssue());
}
}
}
}
}
}
}
}