08 多态课后作业

知识点一:类型转换

源代码:

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;

}

}

子类能赋给父类,改变父类的方法,但不改变父类中的变量。

知识点二:类的继承

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=100;

public void printValue() {

System.out.println("Parent.printValue(),myValue="+myValue);

}

}

class Child extends Parent{

public int myValue=200;

public void printValue() {

System.out.println("Child.printValue(),myValue="+myValue);

}

}

运行结果截图:

结论:子类能覆盖父类,但是父类中的变量的值是不改变的,访问父类中的变量时可用super来访问,反之则一直被子类覆盖。父类被覆盖时,对父类中的变量进行操作时,父类中的变量改变,但输出时仍输出覆盖父类的子类的变量。可以对父类操作前强制转化为对子类的操作,即(child)Parent.myValue++,这时改变的将是覆盖父类的子类。

实验任务一:ATM

源代码:

//ATM

//Han Yang 2016\11\15

import java.util.Scanner;

public class ATM {

private String Account;

private String mima;

private String name;

private String Date;

private double YuE;

ATM(String a,String b,String c,String d,double e){

Account = a;

mima = b;

name = c;

Date = d;

YuE = e;

}

void setYuE(double m)

{

YuE = m;

}

void setMima(String a){

mima = a;

}

String getName(){return name;}

String getMima(){return mima;}

double getYue(){return YuE;}

static void meno1(){

System.out.println("1、存款\n2、取款\n3、转账汇款\n4、修改密码\n5、查询余额\n0、退出");

}

public static void main(String[] args) {

// TODO Auto-generated method stub

Scanner in1 = new Scanner(System.in);

Scanner in2 = new Scanner(System.in);

Scanner in3 = new Scanner(System.in);

Scanner in4 = new Scanner(System.in);

Scanner in5 = new Scanner(System.in);

ATM[] a = new ATM[20];

int num=1;

int j;

a[0] = new ATM("1111111111","123456","hanhan","2016\11\15",1000);

System.out.println("请插卡:");

System.out.println("请输入密码:");

String mi = in1.next();

for(int i=0;i<num;i++)

{

if(mi .equals(a[i].getMima()) )

{

System.out.println("密码 正确");

meno1();

double qian_num;

j=in2.nextInt();

while(j!=0)

{

if(j==1)

{

System.out.println("请放入少于100张钞票:");

qian_num=in3.nextDouble();

a[i].setYuE(a[i].getYue()+qian_num);

System.out.println("存钱成功");

}

if(j==2)

{

System.out.println("请输入要进取款的金额:1、100 2、500  3、1000 4、1500 5、2000 6、5000 7、其他 8、退卡");

int k;

k=in2.nextInt();

if(k==1)

a[i].setYuE(a[i].getYue()-100);

else if(k==2)

a[i].setYuE(a[i].getYue()-500);

else if(k==3)

a[i].setYuE(a[i].getYue()-1000);

else if(k==4)

a[i].setYuE(a[i].getYue()-1500);

else if(k==5)

a[i].setYuE(a[i].getYue()-2000);

else if(k==6)

a[i].setYuE(a[i].getYue()-5000);

else if(k==7)

{qian_num = in4.nextDouble();

a[i].setYuE(a[i].getYue()-qian_num);}

}

if(j==3)

{

System.out.println("请输入要转账的账号 :");

String a1;

a1 = in5.next();

System.out.println("请输入要转账的金额 :");

String a2;

a2 = in5.next();

System.out.println("转账成功! :");

}

if(j==4)

{

System.out.println("请输入修改后的密码 :");

String a1;

a1 = in5.next();

a[i].setMima(a1);

}

if(j==5)

{

System.out.println("余额  :"+a[i].getYue());

}

meno1();

j=in2.nextInt();

}

}

else if(i == num)

System.out.println("密码错误,该卡锁定。");

}

in1.close();

in2.close();

in3.close();

in4.close();

in5.close();

}

}

程序截图:

 

时间: 2024-11-05 13:43:39

08 多态课后作业的相关文章

java多态课后作业

一.验证 (1)子类和父类定义了一模一样的方法 ·结果是100.200.200.200.201 ·父类调用了子类的方法,但是方法中调用的变量是子类的变量 ·自我总结:子类中的方法,如果调用同名变量,则调用的是子类的. 总结: ·当子类与父类拥有一样的方法,并且让一个父类变量引用一个子类对象时,到底调用哪个方法,由对象自己的"真实"类型所决定,这就是说:对象是子类型的,它就调用子类型的方法,是父类型的,它就调用父类型的方法. ·这个特性实际上就是面向对象"多态"特性的

继承与多态 - 课后作业

1 . 继承条件下的构造方法调用 class Grandparent { public Grandparent() { System.out.println("GrandParent Created."); } public Grandparent(String string) { System.out.println("GrandParent Created.String:" + string); } } class Parent extends Grandpar

课后作业

课后作业 "类型转换"知识点考核-2 程序源代码: 1 class Mammal{} 2 class Dog extends Mammal {} 3 class Cat extends Mammal{} 4   5 public class TestCast 6 { 7      public static void main(String args[]) 8      { 9             Mammal m; 10             Dog d=new Dog();

08 多态与异常处理

课后作业一:接口多态:使用接口代替抽象基类一.源代码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.ad

数组课后作业

课后作业: 随机生成10个数,填充一个数组,然后用消息框显示数组,接着计算数组元素的和,将结果也显示在消息框中. 设计思路:首先使用random随机产生10个数,存储在数组中,然后使用for循环把数字存储在一个String对象中,再使用for循环求出数组中所有数字的和,最后用对话框输出内容. 程序流程图: 源程序代码: import javax.swing.*; public class Test1{ public static void main( String args[] ){ Strin

lhtjzC++征对视频教程的课后作业在哪里可以找到哦

⌒鉴闽 lhtjzC++征对视频教程的课后作业在哪里可以找到哦

异常处理---动手动脑及课后作业

动手动脑1:请阅读并运行AboutException.java示例,然后通过后面的几页PPT了解Java中实现异常处理的基础知识. 源码: import javax.swing.*; class AboutException { public static void main(String[] a) { int i=1, j=0, k; k=i/j; try { k = i/j; // Causes division-by-zero exception //throw new Exception

课后作业---字符串

一.课后作业一 1.设计思想:根据题意,首先提示输入要进行的操作:解密或加密,然后输入一个字符串,利用charAt()方法将改变的字母连接到结果上,加密:将前23个大小写字母+3,后3个-23强制转化为char:解密:后23个大小写字母-3,前3个+23.再根据结果进行改变,添加提示. 2.程序流程图: 3.源代码: package T4; //胡建峰,2016.10.25 //字串加密 import java.util.Scanner; public class Test { public s

TJU_SCS_C#课后作业(1)

一.作业要求 这是本学期C#课程学习的第一次课后作业,主要大体感受一下C#编程Visual Studio的界面以及一些基本操作.几乎所有编程语言的学习最初都是由hello world开始的,这次我所做的就是根据章老师上课的示范在控制台中显示hello world字样. 二.作业内容 这是一个很简单的代码,最主要的就一句Console.WriteLine("Hello World!"),我还根据章老师上课的示范对控制台的背景和前景进行了些许尝试. 三.课后思考 感觉C#编程语言和Java