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(); ((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); } }
上述代码的特点是:子类和父类定义了一模一样的字段和方法。
第一个是父类自身的对象,同时调用了父类自己的方法。第二个是子类自身的对象调用了子类自己的方法。
第三个父类变量引用子类对象调用子类的方法。第四个引用了子类的对象,调用了子类的方法。
第五个通过类型转换改变了子类的变量,用了子类的方法。
当子类与父类拥有一样的方法,并且让一个父类变量引用一个子类对象时,到底调用哪个方法,由对象自己的“真实”类型所决定,这就是说:对象是子类型的,它就调用子类型的方法,是父类型的,它就调用父类型的方法。
2.
import java.util.Scanner; class Account{ String account; String name; String date; int key; double money; public Account(String a,String b,String c,int d,double e) { account=a; name=b; date=c; key=d; money=e; } } public class Option { public static void main(String[] args) { Account aa=new Account("622888040311","zxw","2016.11.15",123456,1000); int a,b; System.out.println("请选择语言:1.中文 2.英文"); Scanner in =new Scanner(System.in); a=in.nextInt(); System.out.println("请输入密码:"); Scanner in1 =new Scanner(System.in); b=in1.nextInt(); if(b==aa.key){ while(true){ int choose; System.out.println("请选择操作:1.存款 2.取款 3.转账汇款 4.修改密码 5.查询余额"); Scanner in2 =new Scanner(System.in); choose=in2.nextInt(); if(choose==1){ System.out.println("请输入存款金额:"); Scanner in3 =new Scanner(System.in); double cun=in3.nextInt(); aa.money=aa.money+cun; continue; } else if(choose==2){ System.out.println("请输入取款金额:"); Scanner in4=new Scanner(System.in); double qu=in4.nextDouble(); if(aa.money<qu){ System.out.println("卡内余额不足"); } aa.money=aa.money-qu; continue; } else if(choose==3){ System.out.println("请输入要转账的卡号:"); Scanner in6=new Scanner(System.in); String hang=in6.nextLine(); if(hang.equals(aa.account)){ System.out.println("请输入转账金额:"); Scanner in5=new Scanner(System.in); double zhuan=in5.nextDouble(); aa.money=aa.money-zhuan; } } else if(choose==4){ System.out.println("请输入原密码:"); Scanner in7=new Scanner(System.in); int mi=in7.nextInt(); if(mi==aa.key){ System.out.println("请输入新密码:"); Scanner in8=new Scanner(System.in); int mi2=in8.nextInt(); aa.key=mi2; } } else if(choose==5){ System.out.println("现在的余额为:"+aa.money); } } } else System.out.println("密码错误,该卡已被锁定,无法操作"); } }
时间: 2024-10-17 18:04:55