Java课堂 动手动脑6
一.下列语句哪一个将引起编译错误?为什么?哪一个会引起运行时错误?为什么?
m=d;d=m;d=(Dog)m;d=c;c=(Cat)m;
先进行自我判断,
1、代码:
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=c;c=(Cat)m;
//d=m;错误
m=d;
d=(Dog)m;
//d=c;错误的
}
}
2判断在代码里。
3、总结:子类能赋给父类,改变父类的方法,但不改变父类中的变量。父类赋值给子类,需要确定是给的那个子类,否则会出错。
二.运行以下测试代码
public class ParentChildTest {
public static void main(String[] args) {
Parent parent=new Parent();
parent.printValue();
Child child=new Child();
child.printValue();
parent=child;
parent.printValue();
parent.myValue++;
parent.printValue();
((Child)parent).myValue++;
parent.printValue();
}
}
class Parent{
public int myValue=;
public void printValue() {
System.out.println("Parent.printValue(),myValue="+myValue);
}
}
class Child extends Parent{
public int myValue=;
public void printValue() {
System.out.println("Child.printValue(),myValue="+myValue);
}
}

结论:子类能覆盖父类,但是父类中的变量的值是不改变的,访问父类中的变量时可用super来访问,反之则一直被子类覆盖。父类被覆盖时,对父类中的变量进行操作时,父类中的变量改变,但输出时仍输出覆盖父类的子类的变量。可以对父类操作前强制转化为对子类的操作,即(child)Parent.myValue++,这时改变的将是覆盖父类的子类。
三、ATM
import java.util.Scanner;
class Account
{
private String code =null; //信用卡号
protected String key=null; //客户密码
protected double money =0.0; //卡里金额
public Account(String code,String key,double money)
{
this.code=code;
this.key=key;
this.money=money;
}
String get_Code() {
return code;
}
String get_Key() {
return key;
}
double get_Money() {
return money;
}
void set_Balance(double mon) {
money -= mon;
}
}
class make extends Account
{
public make(String code,String key,double money) {
super(code,key,money);
}
void Welcome()
{
Scanner a=new Scanner(System.in);
System.out.println("你已进入,请输入密码");
String key1=a.next();
System.out.println(key);
if(key1.equals(key))
{
System.out.println("密码正确,您已进入\n");
}
else
{
System.out.println("您的密码错误,系统已退出!");
System.exit();
} }
void cunkuan()
{
Scanner a=new Scanner(System.in);
System.out.println("请输入存款金额");
double money1=a.nextDouble();
this.money=money+money1;
System.out.println("您以成功为你的账户存款"+this.money);
}
void qukuan()
{
Scanner a=new Scanner(System.in);
System.out.println("取款选项\n100\n200\n500\n1000\n1500\n2000\n5000\n其他金额\n退卡\n");
System.out.println("请输入您需要的取款选项:");
String aa=a.next();
if(aa.equals(""))
{
this.money=money-;
System.out.println("您以成功取款"++"请在取钱口取走你大现金。");
}
if(aa.equals(""))
{
this.money=money-;
System.out.println("您以成功取款"++"请在取钱口取走你大现金。");
}
if(aa.equals(""))
{
this.money=money-;
System.out.println("您以成功取款"++"请在取钱口取走你大现金。");
}
if(aa.equals(""))
{
this.money=money-;
System.out.println("您以成功取款"++"请在取钱口取走你大现金。");
}
if(aa.equals(""))
{
this.money=money-;
System.out.println("您以成功取款"++"请在取钱口取走你大现金。");
}
if(aa.equals(""))
{
this.money=money-;
System.out.println("您以成功取款"++"请在取钱口取走你大现金。");
}
if(aa.equals(""))
{
this.money=money-;
System.out.println("您以成功取款"++"请在取钱口取走你大现金。");
}
if(aa.equals("其他金额"))
{
System.out.println("请输入取款金额:");
double r=a.nextDouble();
this.money=money-r;
System.out.println("您以成功取款"+r+"请在取钱口取走你大现金。");
}
if(aa.equals("退卡"))
{
System.out.println("请取走您的卡!");
System.exit();
}
else
{
System.out.println("请取走您的卡!");
System.exit();
}
}
void zhuanZhang()
{
System.out.println("请输入转账金额");
Scanner a=new Scanner(System.in);
int aa=a.nextInt();
if(aa<)
{
this.money=money-aa;
System.out.println("转账操作成功!");
}
else{System.out.println("余额不足,转账失败!");}
}
void caidan()
{
System.out.println("【存款---1】");
System.out.println("【取款---2】");
System.out.println("【余额---5】");
System.out.println("【转账---3】");
System.out.println("【退卡---4】");
System.out.println("---------");
System.out.println("请输入你的操作:");
System.out.println("请选择你需要的服务:");
Scanner a=new Scanner(System.in);
int num=a.nextInt();
switch(num) {
case : cunkuan(); break;
case : qukuan(); break;
case : zhuanZhang(); break;
case : System.exit(); System.out.println("系统已退出!请取走您的卡!"); break;
}
}
}
public class ATM {
public static void main(String[] args) {
make peo=new make("","",);
peo.Welcome();
peo.caidan();
}
}

总结:此程序于学生信息管理相似。改成多态不是很困难,通过查阅资料和我的努力暂时就做到了这里,而且编写这样的程序使我对多态有了进一步的了解,所以我一定会做完它的。
Java课堂 动手动脑6的更多相关文章
- java课堂动手动脑及课后实验总结
动手动脑一:枚举 输出结果: false false true SMALL MEDIUM LARGE 分析和总结用法 枚举类型的使用是借助ENUM这样一个类,这个类是JAVA枚举类型的公共基本 ...
- java课堂动手动脑总结
java有8种基本数据类型:byte,int,short,long,boolean,char,float,double. 对应的为:Byte,Int,Short,Long,Boolean,Charec ...
- JAVA课堂动手动脑实验--方法的重载定义,组合数的递归算法
1. 请看以下代码,你发现了有什么特殊之处吗? 答:此程序中的两个方法虽然方法名一样,但是参数的数据类型不同: 这是方法的重载,方法的重载需要满足的条件: 1)方法名相同: 2)参数类型不同,参数个数 ...
- Java课堂 动手动脑5
1.了解棋盘打印:利用二维数组输出一个15*15的棋盘,棋盘的原素为“+”,就是输出一个横纵都是15个“+”的二维数组,然后再以坐标形式输入棋子“●”,替换掉原来棋盘里的“+”.再编写代码. 电脑随机 ...
- java课堂 动手动脑3
(1) 该函数没有赋初值再就是如果类提供一个自定义的构造方法,将导致系统不在提供默认的构造方法. (2) public class test { public static void main(Str ...
- JAVA课堂-动手动脑1
一.Enum:一般用来表示一组相同类型的常量.对这些属性用常量的好处是显而易见的,不仅可以保证单例,且比较时候可以用”==”来替换equals,枚举对象里面的值都必须是唯一的. 代码: public ...
- Java课堂动手动脑
1.使用Files. walkFileTree()找出指定文件夹下所有大于指定大小(比如1M)的文件: 代码: package test; import java.io.IOException; im ...
- java课堂动手动脑博客
随机生成10个数,填充一个数组,然后用消息框显示数组内容,接着计算数组元素的和,将结果也显示在消息框中. 要求将设计思路.程序流程图.源程序代码.结果截图.编程总结等发表到博客园. (截止时间2015 ...
- java课堂 动手动脑2
1.编写一个方法,使用以上算法生成指定数目(比如1000个)的随机整数 Modulus=231-1=int.MaxValue, Multiplier=75=16807. C=0 当显示过231-2个数 ...
随机推荐
- gmap 获取瓦片数
在 gmap1.7版本中 gMapControl1.MapProvider.Projection.GetAreaTileCount(area, i, 0); 可用来获取到erea里i层的瓦片数量. 但 ...
- C++ 洛谷 P2657 [SCOI2009]windy数 题解
P2657 [SCOI2009]windy数 同步数位DP 这题还是很简单的啦(差点没做出来 个位打表大佬请离开(包括记搜),我这里讲的是DP!!! 首先Cal(b+1)-Cal(a),大家都懂吧(算 ...
- java虚拟机-GC-调优
1. 年轻代大小选择 * 响应时间优先的应用:尽可能设大,直到接近系统的最低响应时间限制(根据实际情况选择).在此种情况下,年轻代收集发生的频率也是最小的.同时,减少到达年老代的对象. * 吞吐量优先 ...
- Easy doesn't enter into grown-up life
Hi xinlu, good afternoon, my name is xx, you can also call me andrew. i'm 31 years old, and i'm from ...
- 嵊州D4T1 翻车 rollover 真的翻车了
翻车 [问题描述] 有一天,小武找到了翻车王,给了他n个整数a1,a2,a3,…an,翻车王需要选择其中的k个数,使得选出的k个数中任意两个的差都可以被m整除. 选出的数可以重复,但不可以超过这n个数 ...
- C语言学习书籍推荐《C语言接口与实现:创建可重用软件的技术》下载
<C语言接口与实现:创建可重用软件的技术>概念清晰.实例详尽,是一本有关设计.实现和有效使用C语言库函数,掌握创建可重用C语言软件模块技术的参考指南.书中提供了大量实例,重在阐述如何用一种 ...
- [开源]OSharpNS 步步为营系列 - 3. 添加业务服务层
什么是OSharp OSharpNS全称OSharp Framework with .NetStandard2.0,是一个基于.NetStandard2.0开发的一个.NetCore快速开发框架.这个 ...
- CDQZ集训DAY5 日记
又一个爆炸的一天…… 早上起来发现貌似是周末,七中放假(别人家的学校(一周一放,一放两天)……)然而感觉状态不是很好,感觉药丸. 题目一上来就装弱,有诈.第一题上来先打暴力,T2不知道怎么打.T3暴力 ...
- Noip 2016 天天爱跑步 题解
[NOIP2016]天天爱跑步 时间限制:2 s 内存限制:512 MB [题目描述] 小C同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.<天天爱跑步>是 ...
- Java 内存映射文件
import java.io.*; import java.nio.MappedByteBuffer; import java.nio.channels.FileChannel; import jav ...
