一:怎样判断对象是否可以转换
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)); } }
二:多态父类调用子类的方法
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); } }
当父类调用子类的对象时,父类并不能调用子类的函数,而是调用自己的函数,由于自己的函数名与子类的函数名同名,所以掉用了子类的函数体中的内容
三:ATM的工作原理
import java.util.*; class Atm { String name; String date; int yue; String mima; public int denglu() { int a=0; System.out.print("请输入密码:"); String s; Scanner in=new Scanner(System.in); s=in.nextLine(); if(mima.equals(s)) { a=1; return a; } else { System.out.println("密码错误,卡已经锁死!!!"); return a; } } public void cunkuan() { System.out.println("请输入存款金额:"); Scanner in=new Scanner(System.in); int a; a=in.nextInt(); yue=yue+a; } public void zhuanzhang() { String huming; System.out.println("请输入卡号:"); Scanner in=new Scanner(System.in); huming=in.nextLine(); System.out.println("请输入转账金额:"); int a; a=in.nextInt(); yue=yue-a; System.out.println("转账成功!!!"); } public void qukuan() { int i; System.out.println("请选择金额:1 100 2 500 3 1000 4 1500 5 2000 6 选择其他金额 7 退卡"); Scanner in=new Scanner(System.in); i=in.nextInt(); if(i==1) { if(yue<100) { System.out.println("账户余额不足!!!"); } else { yue=yue-100; } } else if(i==2) { if(yue<500) { System.out.println("账户余额不足!!!"); } else { yue=yue-500; } } else if(i==3) { if(yue<1000) { System.out.println("账户余额不足!!!"); } else { yue=yue-1000; } } else if(i==4) { if(yue<1500) { System.out.println("账户余额不足!!!"); } else { yue=yue-1500; } } else if(i==5) { if(yue<2000) { System.out.println("账户余额不足!!!"); } else { yue=yue-2000; } } else if(i==6) { System.out.print("请输入需要的金额:"); int s; s=in.nextInt(); if(yue<s) { System.out.println("账户余额不足!!!"); } else { yue=yue-s; } } } public Atm(String a,String b,int c) { name=a; date=b; yue=c; mima="liming"; } public void xiugai() { String a; System.out.print("请输入新密码:"); Scanner in=new Scanner(System.in); a=in.nextLine(); mima=a; } public void chaxun() { System.out.println("当前账户余额为"+yue); } } public class Atmd { public static void main(String[] args) { // TODO Auto-generated method stub Atm a=new Atm("liming","20161126",100000); int w,q,e; e=a.denglu(); if(e==1) { for(q=0;;q++) { 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 退卡"); Scanner in=new Scanner(System.in); q=in.nextInt(); if(q==1) { a.qukuan(); } else if(q==2) { a.zhuanzhang(); } else if(q==3) { a.cunkuan(); } else if(q==4) { a.chaxun(); } else if(q==5) { a.xiugai(); } else { break; } } } } }