JAVA08多态之课程问题解决
课后作业一:接口多态:使用接口代替抽象基类
1.源代码:
package zoo4; import java.util.Vector; public class Zoo2 { public static void main(String args[]) {
Feeder f = new Feeder("小李");
Vector<Animal> ans = new Vector<Animal>();//可随时向其中加入或移除对象 //饲养员小李喂养一只狮子
ans.add(new Lion());
//饲养员小李喂养十只猴子
for (int i = 0; i < 10; i++) {
ans.add(new Monkey());
}
//饲养员小李喂养5只鸽子
for (int i = 0; i < 5; i++) {
ans.add(new Pigeon());
}
f.feedAnimals(ans);
}
} class Feeder { public String name; Feeder(String name) {
this.name = name;
} public void feedAnimals(Vector<Animal> ans) {
for (Animal an : ans) {
an.eat();
}
}
} interface Animal { public void eat();
} class Lion implements Animal { public void eat() {
System.out.println("我不吃肉谁敢吃肉!");
}
} class Monkey implements Animal { public void eat() {
System.out.println("我什么都吃,尤其喜欢香蕉。");
}
} class Pigeon implements Animal { public void eat() {
System.out.println("我要减肥,所以每天只吃一点大米。");
}
}
2.运行截图:
课后作业二:用多态的方法模拟ATM操作流程。
1.源程序:
package Work;
//接口多态:使用接口代替抽象基类
//李慧,2016.11.18
import java.util.Scanner;
import java.util.Vector; public class ATM{
static AccountY stu[]=new Account[500]; public static void main(String[] args) {
// TODO Auto-generated method stub
//主界面(5个用户)
stu[0]=new Account("20153150","李慧","2016/11/15","123456",1000);
stu[1]=new Account("20153151","李","2016/11/15","li",2000);
stu[2]=new Account("20153152","木子","2016/11/15","muzi",3000);
stu[3]=new Account("20153149","诺米","2016/11/15","nuomi",5000);
stu[4]=new Account("20153148","夏小暑","2016/11/15","xiaxiaoshu",4800);
String key;
Scanner scan=new Scanner(System.in);
Scanner scan1=new Scanner(System.in);
Scanner scan2=new Scanner(System.in);
Scanner scan3=new Scanner(System.in);
int num=0;
int k=1;
System.out.println("请输入密码:");
key=scan.nextLine();
int b=0;
for(int i=0;i< 5;i++)
{ if(!key.equals(stu[i].getKey()))
{ b++;}}
if(b>=5){
System.out.print("该卡已被锁定,无法操作");
}
else
for(int i=0;i< 5;i++)
{
if(key.equals(stu[i].getKey()))
{
while(k==1)
{
System.out.println();
System.out.print("1.存款 2.取款 3.转账汇款 4.修改密码 5.查询余额 6.退卡");
System.out.println();
System.out.print("请选择:");
num=scan1.nextInt();
if(num==6)
{ System.out.println("卡已成功退出!请拿卡!");
break;
}
switch(num)
{
case 1://存款
double m;
System.out.print("请输入存入的金额:");
m=scan2.nextDouble();
stu[i].cun(m);
break;
case 2://取款
int numm;
System.out.print("100元\t500元\t1000元\t1500元\t2000元\t5000元\t其他金额\n"
+ "1.退卡");
System.out.println();
System.out.print("请选择:");
numm=scan3.nextInt();
if(numm==1) break;
else
stu[i].qu(numm);break;
case 3://转账汇款
String nummm;
double cc;
int n;
System.out.print("请输入转账行号:");
nummm=scan.nextLine();
/*boolean b=true;
for(int j=0;j<5;j++)
{if(!nummm.equals(stu[j].getNum()))
{
b=false;
}}
if(b==false){
System.out.println("信息错误!");
}*/
for(int j=0;j<5;j++)
if(nummm.equals(stu[j].getNum()))
{
System.out.print("请输入转账金额:");
cc=scan.nextDouble();
System.out.print("请确认(1确认,0取消)");
n=scan.nextInt();
if(n==1)
{
stu[i].qu(cc);
stu[j].cun(cc);
System.out.print("转账成功!");
}
else if(n==0){
System.out.print("已取消!");
}
else{
System.out.print("发生错误!");
}
}
break;
case 4:
String kk;
System.out.print("请输入修改的密码:");
kk=scan.nextLine();
stu[i].setKey(kk);
break;
case 5:
System.out.print("余额为:"+stu[i].getMoney());
break;
case 6:
break;
}
}
}} }
} abstract class AccountY
{
public abstract String getNum();
public abstract void setKey(String s);
public abstract String getKey();
public abstract double getMoney();
public abstract void cun(double m);
public abstract void qu(double m);
} class Account extends AccountY{
private String num;//长度为11,由数字和字符组合
private String name;//用户的姓名
private String Date;//操作日期
private String key;//账户密码
private double money;//当前余额
public Account(String n,String a,String b,String c,double d){num=n;name=a;Date=b;key=c;money=d;}
public String getNum(){return num;}
public String getName(){return name;}
public String getDate(){return Date;}
public void setKey(String s){
key=s;
}
public String getKey(){return key;}
public double getMoney(){return money;}
public void cun(double m){
if(m<=200000)
money+=m;
else
{System.out.println("超出限额!");}
}
public void qu(double m){
if(m<money)
money-=m;
else
System.out.println("超出余额!");
}
}
2.运行结果截图:
验证:
①TestInstanceof.java
代码如下:
public class TestInstanceof
{
public static void main(String[] args)
{
//声明hello时使用Object类,则hello的编译类型是Object,Object是所有类的父类
//但hello变量的实际类型是String
Object hello = "Hello";
//String是Object类的子类,所以返回true。
System.out.println("字符串是否是Object类的实例:" + (hello instanceof Object));
//返回true。
System.out.println("字符串是否是String类的实例:" + (hello instanceof String));
//返回false。
System.out.println("字符串是否是Math类的实例:" + (hello instanceof Math));
//String实现了Comparable接口,所以返回true。
System.out.println("字符串是否是Comparable接口的实例:" + (hello instanceof Comparable));
String a = "Hello";
//String类既不是Math类,也不是Math类的父类,所以下面代码编译无法通过
//System.out.println("字符串是否是Math类的实例:" + (a instanceof Math));
}
}
运行结果截图:
②TestCast.java
代码如下:
class Mammal{}
class Dog extends Mammal {}
class Cat extends Mammal{} public class TestCast
{
public static void main(String args[])
{
Mammal m;
Dog d=new Dog();
Cat c=new Cat();
m=d;
//d=m;
d=(Dog)m;
//d=c;
//c=(Cat)m; }
}
运行结果没有出错!
③Zoo.java
代码如下:
package zoo4; import java.util.Vector; public class Zoo { public static void main(String args[]) {
Feeder f = new Feeder("小李");
Vector<Animal> ans = new Vector<Animal>();//可随时向其中加入或移除对象 //饲养员小李喂养一只狮子
ans.add(new Lion());
//饲养员小李喂养十只猴子
for (int i = 0; i < 10; i++) {
ans.add(new Monkey());
}
//饲养员小李喂养5只鸽子
for (int i = 0; i < 5; i++) {
ans.add(new Pigeon());
}
f.feedAnimals(ans);
}
} class Feeder { public String name; Feeder(String name) {
this.name = name;
} public void feedAnimals(Vector<Animal> ans) {
for (Animal an : ans) {
an.eat();
}
}
} abstract class Animal { public abstract void eat();
} class Lion extends Animal { public void eat() {
System.out.println("我不吃肉谁敢吃肉!");
}
} class Monkey extends Animal { public void eat() {
System.out.println("我什么都吃,尤其喜欢香蕉。");
}
} class Pigeon extends Animal { public void eat() {
System.out.println("我要减肥,所以每天只吃一点大米。");
}
}
运行结果截图:
JAVA08多态之课程问题解决的更多相关文章
- JAVA字符串05之课程问题解决
(一)古罗马皇帝凯撒在打仗时曾经使用过以下方法加密军事情报:请编写一个程序,使用上述算法加密或解密用户输入的英文字串. 1.设计思想:首先选择是加密字符串还是解密字符串,两种算法相似.如果要加密字符串 ...
- JAVA语法02之课程问题解决
(一)示例程序+运行结果: ①EnumTest.java public class EnumTest { public static void main(String[] args) { Size s ...
- java-08多态与异常处理
1.运行以下代码: public class ParentChildTest { public static void main(String[] args) { Parent parent=new ...
- JAVA编程讲座-吴老
JAVA系列公开课第4讲:多态系列课程:从JAVA编程零基础讲起,同时结合工作中遇到的具体实例,语言清晰易懂,连续10周+深入讲解,打下编程基础,让我们一起打来自动化测试的大门时间:4月25日(周一) ...
- .NET Core CSharp初级篇 1-5 接口、枚举、抽象
.NET Core CSharp初级篇 1-5 本节内容类的接口.枚举.抽象 简介 问题 如果你需要表示星期或者是某些状态,使用字符串或者数字是否不直观? 你是否发现,无论何种电脑,它的USB口的设计 ...
- php课程 12-41 多态是什么
php课程 12-41 多态是什么 一.总结 一句话总结:一种请求,多种响应(根据参数类型和数量) 1.function useUsb(Usb $usb){}这句话是什么意思? 判断$usb参数是否实 ...
- java基础课程笔记 static 主函数 静态工具类 classpath java文档注释 静态代码块 对象初始化过程 设计模式 继承 子父类中的函数 继承中的构造函数 对象转型 多态 封装 抽象类 final 接口 包 jar包
Static那些事儿 Static关键字 被static修饰的变量成为静态变量(类变量) 作用:是一个修饰符,用于修饰成员(成员变量,成员方法) 1.被static修饰后的成员变量只有一份 2.当成员 ...
- 20155228 2016-2017-2《Java程序设计》课程总结
20155228 2016-2017-2<Java程序设计>课程总结 每周作业链接汇总 预备作业1 简要内容 了解「Trainer/Trainee」是最好的师生关系,对即将到来的翻转课堂有 ...
- [课程设计]Scrum 1.6 多鱼点餐系统开发进度
[课程设计]Scrum 1.6 多鱼点餐系统开发进度(点餐页面按钮添加&修复) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4. ...
随机推荐
- java反射小例子
package com.txwsqk.reflect; public class Car { private String brand; private String color; private i ...
- 用python在linux下获取网卡地址
使用一个第三方库,名为psutil 代码如下: #!/usr/bin/python # -*- coding:utf-8 -*- import psutil def get_netcard(): ne ...
- windows平台下基于VisualStudio的Clang安装和配置
LLVM 是一个开源的编译器架构,它已经被成功应用到多个应用领域.Clang是 LLVM 的一个编译器前端,它目前支持 C, C++, Objective-C 以及 Objective-C++ 等编程 ...
- ICTCLAS20160405分词系统调试过程
一.前期准备: 1.下载最新版本的资源包:CTCLAS20160405171043_ICTCLAS2016分词系统下载包 2.下载最新版本的licence:https://github.com/NLP ...
- Manthan, Codefest 16 -C. Spy Syndrome 2
time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...
- libevent源码分析:signal-test例子
signal-test是libevent自带的一个例子,展示了libevent对于信号事件的处理方法. #include <sys/types.h> #include <event2 ...
- ( [原创] 4s摄像头出现的问题及解决办法集锦。
[原创] 4s摄像头出现的问题及解决办法集锦. [复制链接] HPagani 34主题 126帖子 13人气 级别: 青苹果 帖子 126 经验 160 精华 人气 13 粉丝1 发消息 ...
- sql-删除无效sql链接
create proc dtLink ( ) --数据库名称 ) as --查询临时表是否存在 if(OBJECT_ID('temp..db') is not null) begin drop tab ...
- dubbo配置文件报错解决方案
下载dubbo.xsd 文件 在eclipse->window->perferences->XML Catalog->Add ->File system->选择刚才 ...
- 简述jpg。Gif。png-8.png-24的区别,分别使用场景
gif.jpg.png格式的图片在网站制作中的区别 一.Gif格式特点: 1.透明性,Gif是一种布尔透明类型,既它可以是全透明,也可以是全不透明,但是它并没有半透明(alpha透明). 2.动画,G ...