写在最前
Java小白一只,记录下Java面对对象的例子,用到了类、接口、抽象类、@override,如果接口如果是Static,可以直接调用,例如本题的Borrow.open,如果是default,则可以重写,例如本题在Student类下重写接口BorrowBooks(),Static表示方法也可以当作全局变量,例如本题的public static int num = 10000。
一、题目
编写一个小的程序,其中定义一些接口、类、抽象类,定义它们的成员(字段及方法), 要求使用使用setter/getter, static, final, abstract,@Override等语法要素,并写一个main函数来使用它们。这些类、接口可以是围绕以下选题之一:
-
飞翔世界:来一次飞翔接力(即多个可飞翔的对象依次调用);
-
动物世界:来一次吃西瓜大赛;
-
图书馆:模拟一天的借阅过程;
-
学校:模拟选课过程;
-
等等
二、题解
运行效果:
public class Complex {
public static void main(String[] args) {
/* 图书馆开张啦 */
Borrow.open();
/* 公司职员jack来借了五本书 */
Staff jack = new Staff();
jack.BorrowBooks();
jack.setBorrowBooks(5);
/* 学生小唐来还了两本书 */
Student Tang = new Student();
Tang.ReturnBooks();
Tang.setReturnBooks(2);
/* 图书馆打烊啦 */
Borrow.close();
}
}
// Borrow 接口
interface Borrow{
public static void open() { //开门开业
System.out.println("新的一天,元气满满~今天也要做一个为民服务的图书馆鸭~");//开门开业
}
public static void close() { //歇业打烊
System.out.println("打烊啦~角落里那个学java的小伙子,明天再来肝吧~");
}
public default void BorrowBooks() {
System.out.println("咦?大厅走过来一个人好像要来借书啦~");//借书
}
public default void ReturnBooks() {
System.out.println("一位同志正准备过来还书~看这位同志的样子应该学到了不少知识!");//还书
}
}
// Library 抽象类
abstract class Library{
public static int num = 10000;//设置图书馆藏书有一万册
public abstract void setBorrowBooks(int n);
public abstract void setReturnBooks(int n);
}
//Staff 类 :表示公司职员来借书
class Staff extends Library implements Borrow{
//设置要借多少书
@Override
public void setBorrowBooks(int n) {
num=num-n;
System.out.println("公司职员借走了"+n+"本书,图书馆剩余"+num+"本书。");
}
@Override
public void setReturnBooks(int n) {
num=num+n;
System.out.println("公司职员归还了"+n+"本书,图书馆剩余"+num+"本书。");
}
}
//Student 类 :表示学生群体来借书
class Student extends Library implements Borrow{
@Override
public void setBorrowBooks(int n) {
num=num-n;
System.out.println("同学借走了"+n+"本书,图书馆剩余"+num+"本书。");
}
@Override
public void setReturnBooks(int n) {
num=num+n;
System.out.println("同学归还了"+n+"本书,图书馆剩余"+num+"本书。");
}
@Override
public void BorrowBooks() { //重写接口方法
System.out.println("走过来一位同学,骨骼精奇,想必一定是一个java少年");
}
}
鄙人有幸在MOOC互评作业时改到了自己的作业且一模一样,且学且珍惜。