10.25第九周java作业
来源:互联网 发布:淘宝空间图片协议 编辑:程序博客网 时间:2024/06/04 19:37
课堂练习1:教材160页4.编程题
设计一个动物声音“模拟器”,希望模拟器可以模拟许多动物的叫声,要求如下。
编写接口Animal
Animal接口有两个抽象方法cry()和getAnimalName(),即要求实现该接口的各种具体的动物类给出自己的叫声和种类名称。
编写模拟器类Simulator
该类有一个playSound(Animal animal)方法,该方法的参数是Animal类型,即参数animal可以调用实现Animal接口类重写的cry()方法播放具体动物的声音,调用重写的getAnimalName()方法显示动物种类的名称。
编写实现Anima接口l的Dog类和Cat类
编写主类Application(用户程序)
实现代码:
Animal接口:
package j1025;
public interface Animal {
public abstract void cry();
public abstract String getAnimalName();
}
Simulator类:
package j1025;
public class Simulator {
void playSound(Animal animal){
System.out.println(animal.getAnimalName());
animal.cry();
}
}
Dog类:
package j1025;
public class Dog extends Simulator implements Animal {
public void cry(){
System.out.println("wang wang wang");
}
public String getAnimalName(){
return "dog";
}
}
Cat类:
package j1025;
public class Cat extends Simulator implements Animal {
public void cry(){
System.out.println("miao miao miao");
}
public String getAnimalName(){
return "cat";
}
}
测试类:
package j1025;
public class Test {
public static void main(String[] args) {
Simulator simulator=new Simulator();
simulator.playSound(new Dog());
simulator.playSound(new Cat());
}
}
测试结果图:
课堂练习2:大学里的学生(Student)需要交学费,而研究生(Graduate)作为学生比较特殊,除了需要交学费外,还可以获取一部分科研津贴,由学校(University)统一发放。此外,学校还需要发放教师(Teacher)的工资。
编写代码模拟上述场景:
1) 设计抽象类Student:
l 属性包括姓名(name)、学费(fee);
l 方法包括:
-构造方法Student(String name)
-抽象方法void setFee(int fee)
-抽象方法int getFee()
2) 定义一个接口Salary:包含一个方法int getSalary();
3) 定义一个研究生类Graduate,继承Student类且实现Salary接口:
l 新增属性:收入(salary)
l 方法包括:
- 构造方法Graduate(String name)
- 重写void setFee(int fee)
- 重写int getFee()
- 重写int getSalary(),研究生获得工资1500
- 新增方法boolean isLoan(),判断是否需要贷款(若收入小于学费则需贷款)
4) 定义一个教师类(Teacher):
l 属性包括:姓名(name)、收入(salary)
l 方法包括:
- 构造方法Teacher(String name)
- 重写int getSalary(),教师获得工资3000
5) 定义一个大学类(University),通过void payOff(Salary s)方法给研究生和教师发放并打印工资。
6)定义主类Test,主函数中至少包括以下代码:
代码实现:
抽象类Student:
package j1025;
public abstract class Student {
String name;
int fee;
Student(String name)
{
this.name=name;
}
abstract void setFee(int fee);
abstract int getFee();
}
接口Salary:
package j1025;
public interface Salary {
public abstract int getSalary();
}
Graduate类:
package j1025;
public class Graduate extends Student implements Salary {
int salary;
Graduate(String name)
{
super(name);
System.out.println("研究生的名字为:"+name);
salary=1500;
}
void setFee(int fee)
{
super.fee=fee;
}
int getFee()
{
return fee;
}
public int getSalary()
{
return salary;
}
boolean isLoan(){
if(salary<fee)
return true;
else
return false;
}
}
Teacher类:
package j1025;
public class Teacher implements Salary{
String name;
int salary=3000;
Teacher(String name){
this.name=name;
System.out.println("教师的名字为:"+name);
}
public int getSalary()
{
return salary;
}
}
University类:
package j1025;
public class University{
void payOff(Salary s)
{
System.out.println("工资为:"+s.getSalary());
}
}
测试类:
package j1025;
public class Test1 {
public static void main(String[] args) {
Graduate g=new Graduate("小亮");
g.setFee(1000);
University u=new University();
u.payOff(g);
System.out.println("是否需要贷款:"+g.isLoan());
Teacher t=new Teacher("大王");
u.payOff(t);
}
}
测试结果:
接口小结:
- 10.25第九周java作业
- 第九周java作业
- 第九周java作业
- 第九周java作业--接口
- Java第九章作业
- 第九次java作业
- 第九周作业
- 第九周作业
- 第九周作业 1
- 第九周作业 2
- 第九周作业
- 第九周作业2
- 第九周作业3
- 第九周作业4
- 第九周作业 1
- 第九周作业 2
- 第九周作业 3
- 第九周作业
- 用JavaScript将long型数据转换成date型或datetime型
- 第十周LeetCode算法题两道
- 用单例模式封装实现一个数据库类
- 创建登录界面
- java读取tensorflow中图像的分类模型
- 10.25第九周java作业
- [Redis学习笔记]-Redis 发布订阅(充当消息组件)
- mxnet 基础学习笔记(李沐课)
- 51nod 1272 最大距离
- SVN_SERVER的搭建
- 基于Mathematica的机器人仿真环境(机械臂篇)
- 多线程知识点总结二
- NVIDIA CUDA Compiler Driver NVCC
- 简单实用的TAB切换标签