第九周java作业--接口
来源:互联网 发布:操作系统进程调度算法 编辑:程序博客网 时间:2024/05/16 01:26
练习一:Java 2实用教程 第五版 160页第四题
Animal.java
package chapter6;public interface Animal { void cry(); String getAnimalName();}
Simulator.java
package chapter6;public class Simulator{ public void playSound(Animal animal){ animal.cry(); String animalNmae = animal.getAnimalName(); System.out.println(animalNmae+"在叫"); System.out.println(); }}
Dog.java
package chapter6;public class Dog implements Animal { @Override public void cry() { // TODO Auto-generated method stub System.out.println("狗叫"); } @Override public String getAnimalName() { // TODO Auto-generated method stub return "狗"; }}
Cat.java
package chapter6;public class Cat implements Animal { @Override public void cry() { // TODO Auto-generated method stub System.out.println("猫叫"); } @Override public String getAnimalName() { // TODO Auto-generated method stub return "猫"; }}
Application.java
package chapter6;public class Application { public static void main(String[] args) { // TODO Auto-generated method stub Simulator simulator = new Simulator(); simulator.playSound(new Dog()); simulator.playSound(new Cat()); }}
运行截图:
练习二:
大学里的学生(Student)需要交学费,而研究生(Graduate)作为学生比较特殊,除了需要交学费外,还可以获取一部分科研津贴,由学校(University)统一发放。此外,学校还需要发放教师(Teacher)的工资。
编写代码模拟上述场景:
1)设计抽象类Student:
属性包括姓名(name)、学费(fee);
方法包括:
- 构造方法Student(String name)
- 抽象方法void setFee(int fee)
- 抽象方法int getFee()
2) 定义一个接口Salary:包含一个方法int getSalary();
3) 定义一个研究生类Graduate,继承Student类且实现Salary接口:
新增属性:收入(salary)
方法包括:
- 构造方法Graduate(String name)
- 重写void setFee(int fee)
- 重写int getFee()
- 重写int getSalary(),研究生获得工资1500
- 新增方法boolean isLoan(),判断是否需要贷款(若收入小于学费则需贷款)
4) 定义一个教师类(Teacher):
属性包括:姓名(name)、收入(salary)
方法包括:
- 构造方法Teacher(String name)
- 重写int getSalary(),教师获得工资3000
5) 定义一个大学类(University),通过void payOff(Salary s)方法给研究生和教师发放并打印工资。
6)定义主类Test,主函数中至少包括以下代码
student.java
package test;public abstract class Student { String name; int fee; public Student(String name) { super(); this.name = name; } abstract void setFee(int fee); abstract int getFee(); public String getName() { System.out.println("Student Name=="+name); return name; }}
Salary.java
package test;public interface Salary { int getSalary(); void setSalary(int salary);}
Graduate.java
package test;public class Graduate extends Student implements Salary{ int salary; public Graduate(String name) { super(name); } @Override void setFee(int fee) { // TODO Auto-generated method stub this.fee = fee; } @Override int getFee() { // TODO Auto-generated method stub return fee; } @Override public int getSalary() { // TODO Auto-generated method stub System.out.println("研究生工资:"+salary); return salary; } boolean isLoan(){ if(salary < getFee()){ return true; }else{ return false; } } @Override public void setSalary(int salary) { // TODO Auto-generated method stub this.salary = salary; }}
Teacher.java
package test;public class Teacher implements Salary{ String name; int salary; public Teacher(String name) { super(); this.name = name; } @Override public int getSalary() { // TODO Auto-generated method stub System.out.println("教师工资:"+salary); return salary; } @Override public void setSalary(int salary) { // TODO Auto-generated method stub this.salary = salary; } public String getName() { System.out.println("Teacher Name=="+name); return name; } public void setName(String name) { this.name = name; }}
University.java
package test;public class University { void payOff(Salary s){ if(s instanceof Graduate){ s.setSalary(1500); s.getSalary(); ((Graduate) s).getName(); }else if(s instanceof Teacher){ s.setSalary(3000); s.getSalary(); ((Teacher) s).getName(); } }}
Test.java
package test;public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Graduate graduate = new Graduate("小亮"); graduate.setFee(1000); University university = new University(); university.payOff(graduate); System.out.println("是否需要贷款:"+graduate.isLoan()); Teacher teacher = new Teacher("大王"); university.payOff(teacher); }}
运行截图:
说明:
自己多在文件里加了个getName()方法,其他跟题目一样
- 第九周java作业--接口
- 第九周java作业
- 第九周java作业
- 10.25第九周java作业
- Java第九章作业
- 第九次java作业
- 第九周作业
- 第九周作业
- 第九周作业 1
- 第九周作业 2
- 第九周作业
- 第九周作业2
- 第九周作业3
- 第九周作业4
- 第九周作业 1
- 第九周作业 2
- 第九周作业 3
- 第九周作业
- 卡在Starting kernel...的原因分析
- HTML学习08-表单标签
- Vim 可视模式
- Codevs1615数据备份
- eclipse 如何查看Java源码
- 第九周java作业--接口
- Thread、Handler和HandlerThread关系何在
- 两个不同类型的重载“圆”
- 吴恩达第一课logistic Regress编程练习(学习笔记)
- Python解释器
- [wqs二分 DP] POJ1160. Post Office
- 心理学效应
- 按钮布局
- TreeSet底层解析和Collections解析