java中08的动手动脑

任务一:

ATM机模拟:

代码:

//赵子鸣,20153131,信1505-2班

package Shi;

import java.util.Scanner;

abstract class Atm{

public abstract void zhuan(String a,double b);

public abstract void setmima(String a);

public abstract double getyue();

public abstract String getmima();

public abstract void set(String a,String b,String c,String d,double e);

public abstract boolean cha(String a);

public abstract boolean panduan(String a);

public abstract void qukuan(int a);

public abstract void cunkuan(int a);

public abstract void qukuan(double a);

public abstract void cunkuan(double a);

}

class Account extends Atm{

String biaoshi;

String name;

String mima;

String date;

double yue;

Account(){}

public void zhuan(String a,double b){

}

public void setmima(String a){

mima=a;

}

public double getyue(){

return yue;

}

public String getmima(){

return mima;

}

public void set(String a,String b,String c,String d,double e){

biaoshi=a;

name=b;

mima=c;

date=d;

yue=e;

}

public boolean cha(String a){

if(biaoshi.equals(a))

return true;

else

return false;

}

public boolean panduan(String a){

if(mima.equals(a))

return true;

else

return false;

}

public void qukuan(int a){

yue=yue-a;

}

public void cunkuan(int a){

yue=yue+a;

}

public void qukuan(double a){

yue=yue-a;

}

public void cunkuan(double a){

yue=yue+a;

}

}

public class Shidd1{

public static void main(String[] args) {

Account a[]=new Account[10];

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

a[i]=new Account();

a[0].set("ABCDE123456","张三","123456","2016/11/15",100);

a[1].set("ABCDE234561","李四","234561","2016/11/15",200);

a[2].set("ABCDE345612","王五","345612","2016/11/15",600);

a[3].set("ABCDE456123","赵六","456123","2016/11/15",800);

a[4].set("ABCDE561234","剑圣","561234","2016/11/15",1000);

Scanner shu1=new Scanner(System.in);

Scanner shu2=new Scanner(System.in);

System.out.println("输出账户标识符");

String a1=shu2.next();

int t=0;

for(int i=0;i<10;i++){

if(a[i].cha(a1))

{

t=i;

break;

}

else

System.out.println("没找到此用户");

}

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

String a2=shu2.next();

if(a[t].getmima().equals(a2)){

boolean w=true;int q;

while(w){

System.out.println("请选择:");

System.out.println("1存款");

System.out.println("2取款");

System.out.println("3转账汇款");

System.out.println("4修改密码");

System.out.println("5查询余额");

System.out.println("6退出");

q=shu1.nextInt();

switch(q)

{

case 1:

int a4=0;

System.out.println("选择金额");

System.out.println("1.100");

System.out.println("2.500");

System.out.println("3.1000");

System.out.println("4.1500");

System.out.println("5.2000");

System.out.println("6.5000");

int a5=shu2.nextInt();

if(a[t].getyue()<a5)

System.out.println("余额不足,失败");

else{

switch(a5)

{

case 1:a4=100;break;

case 2:a4=500;break;

case 3:a4=1000;break;

case 4:a4=1500;break;

case 5:a4=2000;break;

case 6:a4=5000;break;

}

a[t].cunkuan(a4);

System.out.println("存款成功");}

break;

case 2:

System.out.println("输入取款金额");

int a6=shu2.nextInt();

a[t].qukuan(a6);

System.out.println("取款成功");

break;

case 3:

System.out.println("输入转账对象卡号");

String a7=shu2.next();

int a8=0,t2=0;

for(int i=0;i<10;i++){

if(a[i].cha(a7))

{t2=i;

a8=1;

break;}

}

if(a8==1)

{System.out.println("输入金额");

double a9=shu2.nextDouble();

a[t].qukuan(a9);

a[t2].cunkuan(a9);

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

else

System.out.println("没找到此用户");

break;

case 4:

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

String a3=shu2.next();

a[t].setmima(a3);

System.out.println("修改成功");

break;

case 5:

System.out.println("余额为:"+a[t].getyue());

break;

case 6:

w=false;

System.out.println("已退出");

break;

}

}

}

else

System.out.println("该卡已被锁定,无法操作");

shu1.close();

shu2.close();

}

}

截图:

动手动脑问题:

代码:

package Shi1;

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关键字来访问它。如果子类被当作父类使用,则通过子类访问的字段是父类的!

在 java 语言中,多态性体现在两个方面:由方法重载实现的静态多态性(编译时多态)和方法重写实现的动态多态性(运行时多态)。(1)编译时多态在编译阶段,具体调用哪个被重载的方法,编译器会根据参数的不同来静态确定调用相应的方法。(2)运行时多态由于子类继承了父类所有的属性(私有的除外),所以子类对象可以作为父类对象使用。程序中凡是使用父类对象的地方,都可以用子类对象来代替。一个对象可以通过引用子类的实例来调用子类的方法。重写方法的调用原则(为重点):java 运行时系统根据调用该方法的实例,来决定调用哪个方法。对子类的一个实例,如果子类重写了父类的方法,则运行时系统调用子类的方法;如果子类继承了父类的方法(未重写),则运行时系统调用父类的方法。

Zoo1:

代码:

package Shi1;

public class Zoo

{

public static void main(String args[])

{

Feeder f = new Feeder("小李");

// 饲养员小李喂养一只狮子

f.feedLion(new Lion());

// 饲养员小李喂养十只猴子

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

{

f.feedMonkey(new Monkey());

}

// 饲养员小李喂养5只鸽子

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

{

f.feedPigeon(new Pigeon());

}

}

}

class Feeder

{

public String name;

public Feeder(String name)

{

this.name = name;

}

public void feedLion(Lion l)

{

l.eat();

}

public void feedPigeon(Pigeon p)

{

p.eat();

}

public void feedMonkey(Monkey m)

{

m.eat();

}

}

class Lion

{

public void eat()

{

System.out.println("我不吃肉谁敢吃肉!");

}

}

class Monkey

{

public void eat()

{

System.out.println("我什么都吃,尤其喜欢香蕉。");

}

}

class Pigeon

{

public void eat()

{

System.out.println("我要减肥,所以每天只吃一点大米。");

}

}

截图:

Zoo2:

代码:

package Shi;

public class Zoo

{

public static void main(String args[])

{

Feeder f = new Feeder("小李");

//饲养员小李喂养一只狮子

f.feedAnimal(new Lion());

//饲养员小李喂养十只猴子

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

{

f.feedAnimal(new Monkey());

}

//饲养员小李喂养5只鸽子

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

{

f.feedAnimal(new Pigeon());

}

}

}

class Feeder

{

public String name;

Feeder(String name)

{

this.name = name;

}

public void feedAnimal(Animal an)

{

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("我要减肥,所以每天只吃一点大米。");

}

}

截图:

Zoo3:

代码:

//package zoo3;

public class Zoo {

public static void main(String args[]) {

Feeder f = new Feeder("小李");

Animal[] ans = new Animal[16];

//饲养员小李喂养一只狮子

ans[0] = new Lion();

//饲养员小李喂养十只猴子

for (int i = 0; i < 10; i++) {

ans[1 + i] = new Monkey();

}

//饲养员小李喂养5只鸽子

for (int i = 0; i < 5; i++) {

ans[11 + i] = new Pigeon();

}

f.feedAnimals(ans);

}

}

class Feeder {

public String name;

Feeder(String name) {

this.name = name;

}

public void feedAnimals(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("我要减肥,所以每天只吃一点大米。");

}

}

截图:

Zoo4:

代码:

package S;

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("我要减肥,所以每天只吃一点大米。");

}

}

截图:

时间: 2024-10-17 23:24:00

java中08的动手动脑的相关文章

java中06的动手动脑

任务一: 代码: package Shi;   import javax.swing.JOptionPane;   public class Shi6d1 {   public static void main(String[] args) {   int array[] = new int[10]; for(int m=0;m<10;m++) {array[m] = (int)(Math.random()*100);} String str=""; for(int m=0;m&

java中05的动手动脑

动手动脑1: 结果为: 分析:"="判断的是两个对象是否相同(储存的地址和储存的内容) 而"equals"函数判断的是两个对象的值是否相等 String类的Length().charAt(). getChars().replace(). toUpperCase(). toLowerCase().trim().toCharArray()使用说明: 1.string.length()是用来求字符串的长度,返回值为字符串的长度. length():public int l

java中04的动手动脑

1.如果类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法 2.代码输出结果:100 300 字段初始化的规律就是若没有给新创建的变量赋初值,自动调用默认的构造函数给其赋初值,如果自行赋值,便是所赋值. 3.运行结果 Root的静态初始化块 Mid的静态初始化块 Leaf的静态初始化块 Root的普通初始化块 Root的无参数的构造器 Mid的普通初始化块 Mid的无参数的构造器 Mid的带参数构造器,其参数值:Java初始化顺序演示 Leaf的普通初始化块 执行Leaf的构造器 分析

java中03的动手动脑

类与对象,类的对象实例化 类是一个抽象的概念,而对象是按照类的形式产生的具体存在,比如,人类(是类),而你(是对象),对象是类的具体实现, 对象拥有类定义的所有实现.是抽象的概念,我们无法让概念去做一件事情,但是却可以让这个概念的实际存在去做. 生成随机数 java.util.Random类有两种方式构建方式:带种子和不带种子 不带种子:此种方式将会返回随机的数字,每次运行结果不一样 public class RandomTest {public static void main(String[

JAVA语法基础作业——动手动脑以及课后实验性问题 (七)

一.动手动脑 1)源代码 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(

Java类和对象动手动脑

动手动脑1 以下代码为何无法通过编译?哪儿出错了? 如果类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法. 动手动脑2 进行试验 使用上页幻灯片中定义的类,以下代码输出结果是什么? public class Test { public static void main(String[] args) { InitializeBlockClass obj=new InitializeBlockClass(); System.out.println(obj.field);//? obj=n

Java文件与类动手动脑

动手动脑1: 使用Files. walkFileTree()找出指定文件夹下所有大于指定大小(比如1M)的文件. package classJava; import java.io.IOException; import java.nio.file.FileSystems; import java.nio.file.FileVisitOption; import java.nio.file.FileVisitResult; import java.nio.file.FileVisitor; im

java作业04(动手动脑)

1.古罗马皇帝凯撒在打仗时曾经使用过以下方法加密军事情报: 请编写一个程序,使用上述算法加密或解密用户输入的英文字串要求设计思想.程序流程图.源代码.结果截图. 设计思想:首先用户输入一个字符串,再提示用户选择加密还是解密该字符串,设计程序完成功能,加密是字符串每位向后移三位替代那位字母,解密则向前移三位,最后输出新字符串. 程序流程图: 源代码: 结果截图: 2.请查看String.equals()方法的实现代码,注意学习其实现方法. 答:equals 只是比较值是否相同而==则是比较两个变量

Java 第五周 动手动脑

一.以下代码为何无法通过编译?哪儿出错了? 原因分析:这是一个常见的构造错误,错误的自己构建了构造方法,导致系统无法正常的进行变量的构造,系统默认的构造方法无法正常运行 二. package demo; public class Test { public static void main(String[] args) { // TODO 自动生成的方法存根 Foo obj1=new Foo(); Foo obj2=new Foo(); System.out.println(obj1==obj2