虽然不太熟练,还是尽量把所有要素都使用上
父类:人(名字)
子类:学生(名字,ID),管理员(名字)
接口:OperationS
方法:找书,借书,还书
接口:OperationM
方法:同意(如何学生ID相同则同意,否则拒绝),回收
import java.util.ArrayList;
import java.util.List;
public class test
{
static final String[] studentId = {"000","001","002"};//储存学生ID
static List<Book> booklist=new ArrayList<>();//储存现有的书
public static void main(String []args)
{
initBookData();
Student student = new Student("郭靖","000");
Manager manager = new Manager("杨过");
student.lookUpBook(booklist.get(1));
student.sayHello();
manager.sayHello();
student.borrowBook();
manager.receiveStudent(student);
manager.acceptOrNot();
student.returnBook();
manager.recovery();
}
private static void initBookData()//存储书
{
for(int i=1;i<4;i++)
{
Book book = new Book();
book.setBookname("射雕英雄传"+i);
booklist.add(book);
}
}
static class Person
{
private String name;
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
void sayHello()
{
System.out.println("Hello! My name is "+name);
}
}
static class Book
{
private String bookname ;
public String getBookname()
{
return bookname;
}
public void setBookname(String bookname)
{
this.bookname = bookname;
}
}
static class Student extends Person implements OperationS
{
private String id;
Book book;
void sayHello()
{
System.out.println("Hello teacher. My name is "+getName());
}
Student(String name, String id)
{
this.setName(name);
// TODO Auto-generated constructor stub
setId(id);
}
public String getId()
{
return id;
}
public void setId(String id)
{
this.id = id;
}
@Override
public void lookUpBook(Book book)
{
// TODO Auto-generated method stub
this.book = book;
}
@Override
public void borrowBook()
{
// TODO Auto-generated method stub
System.out.println("I want to borrow "+this.book.getBookname()+". my id is "+this.getId());
}
@Override
public void returnBook()
{
// TODO Auto-generated method stub
System.out.println("I come to return "+this.book.getBookname());
}
}
static class Manager extends Person implements OperationM
{
Student student;
void sayHello()
{
System.out.println("Hello student. My name is "+getName());
}
Manager(String name)
{
this.setName(name);
// TODO Auto-generated constructor stub
}
public void receiveStudent(Student student)
{
this.student = student;
}
@Override
public void acceptOrNot() {
// TODO Auto-generated method stub
for(int i = 0;i<3;i++)
if(this.student.id==studentId[i])
{
System.out.println("Yes");
return;
}
System.out.println("Sorry, your id is wrong");
}
@Override
public void recovery()
{
// TODO Auto-generated method stub
System.out.println("Do come again");
}
}
interface OperationS
{
void lookUpBook(Book book);
void borrowBook();
void returnBook();
}
interface OperationM
{
void acceptOrNot();
void recovery();
}
}
遇到的错误:
如果父类字段是私有字段并使用getter,setter方法,子类的构造方法中需要调用setter,此时需要把父类和子类加static
最好一个.java中写一个class
关于用private修饰字段的优点