標籤:bcf 類的變數 top zju ref sam 歸檔 tca gfs
一.類型轉換
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//LANGLANGBAI,2016.11.18import java.util.Scanner;public class ATM1 { private String Account; private String mima; private String name; private String Date; private double YuE; ATM1(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); ATM1[] a = new ATM1[20]; int num=1; int j; a[0] = new ATM1("12345678912","123456","白浪浪","2016\11\17",1000); System.out.println("請插卡:\n插卡成功"); 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("請放入鈔票:"); 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(); }}
運行:
Java語言多態課後歸檔作業