Java(多态)动手动脑
1>
请看以下“变态”的类(参看示例ParentChildTest.java)

上述代码的特点是: 子类和父类定义了一模一样的字段和方法
运行以下测试代码

1. 上边的程序运行结果是什么?

2. 你如何解释会得到这样的输出?
第一个100:是parent调用PrintValue方法输出parent类中myValue值为100;
第二个200:是child调用PrintValue方法输出child类中myValue值为200;
第三个200:是parent = child,将子类对象的赋值给父类,但此时parent只能调用子类的方法,调用子类PrintValue时,输出的当然是子类的myValue值200。
第四个200:虽然parent = child,但parent不能调用子类的变量,所以parent.myValue++;只是将父类对象中的变量myValue值+1但不能改变子类的myValue值,但调用的是子类PrintValue方法时,输出的是子类的myValue值200。
第五个201:(Child)parent,强制转化parent为child对象,此时parent完全成为child对象,所以输出值为201。
3. 计算机是不会出错的,之所以得到这样的运行结果也是有原因的, 那么从这些运行结果中,你能总 结出Java的哪些语法特性?
(1):当子类和父类拥有同名方法时,并且让一个父类变量引用一个子类对象时,调用哪个方法由自己的真实类型来决定。
(2):如果子类与父类有相同的字段,则子类中的字段会代替或隐藏父类的字段,子类方法中访问的是子类中的字段(而不是父类中的字段)。
2>
用多态的方法模拟ATM操作流程。
import java.util.Scanner;
abstract class atma{
public abstract void QuKuan();
public abstract void CunKuan();
public abstract void ZhuanZhang();
public abstract void updataMima(String str);
public abstract void showMoney();
}
public class ATM { public static void main(String[] args) {
// TODO Auto-generated method stub
Account A = new Account();
A.display();
} }
class Account extends atma
{
String account;
String name;
String data;
int leixing;
String mima;
double money;
Account(){}
Account(String account,String name,String data,String mima,double money)
{
this.account = account;
this.name = name;
this.data = data;
this.mima = mima;
this.money = money;
}
public String getMima()
{
return mima;
} public void Mune()
{
System.out.println("1.取款");
System.out.println("2.存款");
System.out.println("3.转账汇款");
System.out.println("4.修改密码");
System.out.println("5.查询余额");
System.out.println("6.退卡");
}
public void QuKuan()
{
System.out.println("100元");
System.out.println("500元");
System.out.println("1000元");
System.out.println("1500元");
System.out.println("2000元");
System.out.println("5000元");
System.out.println("其他金额");
System.out.println("返回");
Scanner in = new Scanner(System.in);
System.out.println("请输入取款金额:");
int M = in.nextInt();
if(M <= money)
{
System.out.println("正在取款请稍后。。。");
money = money - M;
System.out.println("取款成功!");
}
else
{
System.out.println("余额不足,取款失败!");
}
}
public void CunKuan()
{
Scanner in = new Scanner(System.in);
System.out.println("请输入存款金额:");
int M = in.nextInt();
money = money + M;
System.out.println("存款成功!");
}
public void ZhuanZhang()
{
Scanner in = new Scanner(System.in);
System.out.println("请输入转账行号:");
String H = in.next();
System.out.println("你要转账的人的姓名是否为xxx?0:是,1:否");
int X=in.nextInt();
if(X==0)
{
System.out.println("请输入转账金额:");
int M = in.nextInt();
if(money >= M)
{
System.out.println("转账成功!");
money = money - M;
}
else
{
System.out.println("余额不足,转账失败!");
}
}
if(X==1)
{
System.out.println("卡号错误!");
}
}
public void updataMima(String str)
{
if(str.equals(mima))
{
System.out.println("新密码不得与旧密码重复!");
}
else
{
mima = str;
System.out.println("修改成功!");
}
}
public void showMoney()
{
System.out.println("您的账户余额为:"+money);
}
public void display()
{
Scanner in = new Scanner(System.in);
Account[] a = new Account[100];
a[0] = new Account("123456789101","ctt","2016/11/15","123456",1000);
System.out.println( "请输入密码:" );
String input = in.next();
boolean flag = false;
for(int i = 0;i<50;i++)
{
if(a[i].getMima().equals(input)&& a[i]!=null)
flag = true;
break;
}
int s1;
if(flag)
{
boolean p = true;
while(p)
{
Mune();
System.out.println( "请输入要执行的操作:" );
s1 = in.nextInt();
if(s1 == 1)
{
QuKuan();
continue;
}
if(s1 == 2)
{
CunKuan();
continue;
}
if(s1 == 3)
{
ZhuanZhang();
continue;
}
if(s1 == 4)
{
System.out.println("请输入新密码:");
String str = in.next();
updataMima(str);
continue;
}
if(s1 == 5)
{
showMoney();
continue;
}
else
{
p = false;
System.out.println("已退出!");
}
}
} else
{
System.out.println("输入错误!");
}
}
}
结果:





分析:利用抽象类实现。
Java(多态)动手动脑的更多相关文章
- Java之动手动脑(三)
日期:2018.10.12 星期五 博客期:017 这次留了两个动手动脑作业!我需要一个一个来说!先说第一个吧! Part 1 :随机生成1000个随机数 代码: //以下为 RandomMaker. ...
- java的动手动脑10月20日
(1)动手动脑 该函数没有赋初值再就是如果类提供一个自定义的构造方法,将导致系统不在提供默认的构造方法. (2) public class test { /*** @param args*/publi ...
- Java的动手动脑
动手动脑及课后实 仔细阅读示例: EnumTest.java,运行它,分析运行结果? public class EnumTest { public static void main(String[] ...
- java异常处理动手动脑问题解决和课后总结
动手动脑 一.问题:请阅读并运行AboutException.java示例,然后通过后面的几页PPT了解Java中实现异常处理的基础知识. 1.源代码 import javax.swing.*; cl ...
- java课java方法动手动脑
动手动脑: import java.util.Scanner; public class Random { public static void main(String[] args) { ...
- java课堂动手动脑及课后实验总结
动手动脑一:枚举 输出结果: false false true SMALL MEDIUM LARGE 分析和总结用法 枚举类型的使用是借助ENUM这样一个类,这个类是JAVA枚举类型的公共基本 ...
- Java课堂 动手动脑6
一.下列语句哪一个将引起编译错误?为什么?哪一个会引起运行时错误?为什么? m=d;d=m;d=(Dog)m;d=c;c=(Cat)m; 先进行自我判断, 1.代码: class Mammal{} c ...
- Java一些动手动脑实验
一.Java字段初始化的规律: 输出结果为:100 和 300 当把{filed=200}放在public int field=100之后输出结果为:200 和 300 所以执行类成员定义时指定的默认 ...
- Java的动手动脑(七)
日期:2018.11.18 博客期:025 星期日 Part 1:使用 Files.walkFileTree()来找出指定文件夹下大小大于1KB的文件 package temp; import jav ...
- Java的动手动脑(六)
日期:2018.11.8 星期四 博客期:022 --------------------------------------------------------------------------- ...
随机推荐
- pip UnicodeDecodeError: 'ascii' codec can't decode byte
http://blog.csdn.net/computerms/article/details/48056103
- JavaScript笔记:函数
函数是定义一次但却可以调用或执行任意多次的代码块. 一.函数定义 javascript中的函数使用function关键字来定义,常用的函数定义分为三种形式: 声明式函数定义 function sum( ...
- python Django教程 之 安装、基本命令、视图与网站
python Django教程 之 安装.基本命令.视图与网站 一.简介 Django 中提供了开发网站经常用到的模块,常见的代码都为你写好了,通过减少重复的代码,Django 使你能够专注于 w ...
- 部署IISHTTP 404.17无法由静态文件处理程序来处理
部署IIS时候出现下图问题,这是因为IIS无法处理aspx.ashx等后缀名的文件,这是因为Web 服务器接收到请求时,会对所请求的文件的文件扩展名进行检查,确定应由哪个 ISAPI 扩展处 ...
- Xena测试仪的自动化
Xena,Xena Networks公司的网络测试仪,也能覆盖以太网L2~L7层测试仪,但功能较简单,界面也很简洁,用起来比较直观方便. 1.Xena的自动化测试场景 测试PC上的AT框架--> ...
- Linux如何查看进程、杀死进程、启动进程等常用命令
Linux如何查看进程.杀死进程.启动进程等常用命令 关键字: linux 查进程.杀进程.起进程1.查进程 ps命令查找与进程相关的PID号: ps a 显示现行终端机下的所有程序,包括 ...
- Oracle 的递归查询将层级变成字符串
select A.PARENT_GROUP_ID, A.GROUP_ID,sys_connect_by_path(A.GROUP_ID,'/') || '/' path from dam_dataen ...
- 我读汤姆大叔的深入理解js(一)
前言 闲来看看javascript,在圆子里发现了汤姆大叔的文章,先是整体瞄了几眼,感觉不错,然后细细研读.记录下自己的学习历程和个人理解.更重要的是作为笔记 高质量JS代码 在看汤姆大叔的这一系列文 ...
- 设计winform自带动态加载工具按钮和实现热键响应
1.初衷 主要是想设计一个自带添加工具按钮和按钮的快捷键的基窗体.这样以后所设计的窗体只要继承自这个窗体就可以实现热键响应和动态加工具按钮的功能了 写这边文章主要是为了以后使用的时候有个参考,因为这只 ...
- offer
八月份仿真实验室国赛以后,我并没有开始做一些关于找工作的准备,而是在做自己感兴趣的cocos2d-x,大概花了一个星期的时间从安装平台到查资料写了一个flappybird小游戏,将近开学了才把找工作的 ...