码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA多态

时间:2016-11-19 02:01:31      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:类方法   val   访问   show   并且   自己的   多态   示例   私有变量   

1.ATM

import java.util.Scanner;

interface fangfa{

 

public void show();

public void qukuan();

public void cunkuan();

public void zhuanzhang();

public void setAcount(String string, String string2, String string3, String string4, double i);

public String getMima();

}

class atm implements fangfa{

String kahao; //私有变量

String name;

String riqi;

double yue;

String mima;

 

public atm(){ //无参构造函数

 

}

public atm(String kahao,String name,String riqi,String mima,double yue){ //有参构造函数

 

this.kahao=kahao;

this.name=name;

this.riqi=riqi;

this.mima=mima;

this.yue=yue;

}

 

public void setAcount(String kahao,String name,String riqi,String mima,double yue){ //赋值

 

this.kahao=kahao;

this.name=name;

this.riqi=riqi;

this.mima=mima;

this.yue=yue;

}

 public String getkahao(){ return kahao;}//获得值

 

 public String getName(){return name;}

 public String getRiqi(){return riqi;}

 public String getMima(){return mima;}

 public double getYue(){return yue;}

 

public void show()

{

System.out.println("余额为:"+yue);

}

public void cunkuan(){

System.out.println("请输入存款金额:");

Scanner s=new Scanner(System.in);

yue+=s.nextDouble();

show();

}

 

public void zhuanzhang()

{

atm q=new atm();

Scanner s=new Scanner(System.in);

System.out.println("请输入对方卡号:");

q.kahao=s.nextLine();

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

double zhuan=s.nextDouble();

yue=yue-zhuan;

q.yue=q.yue+zhuan;

show();

}

public void qukuan(){

boolean f=true;

while(f){

System.out.println("1100");

System.out.println("2500");

System.out.println("31000");

System.out.println("41500");

System.out.println("52000");

System.out.println("65000");

System.out.println("7、其他金额");

System.out.println("8、退卡");

System.out.println("9、返回");

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

Scanner s=new Scanner(System.in);

int ch=s.nextInt();

switch(ch){

case 1:

if(yue<100)

System.out.print("余额不足");

yue=yue-100;

show();

break;

case 2:

if(yue<500)

System.out.print("余额不足");

else

 

yue=yue-500;

show();

break;

case 3:

if(yue<1000)

System.out.print("余额不足");

else

yue=yue-1000;

show();

break;

case 4:

if(yue<1500)

System.out.print("余额不足");

yue=yue-1500;

show();

break;

case 5:

if(yue<2000)

System.out.print("余额不足");

else

yue=yue-2000;

show();

break;

case 6:

if(yue<5000)

System.out.print("余额不足");

else

yue=yue-5000;

show();

break;

case 7:

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

double qu=s.nextDouble();

if(yue<qu)

System.out.print("余额不足");

else

yue=yue-qu;

show();

break;

case 8:

f=false;

break;

case 9:

f=false;

break;

 

}

}

}

 

}

public class zhuanhua {

 

public static void main(String[] args) {

 

fangfa a=new atm();

a.setAcount("165432156432165", "zhangzemin", "2016.11.18", "123456", 100000);

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

Scanner aa=new Scanner(System.in);

String ba=aa.nextLine();

if(ba.equals(a.getMima()))

 

while(true){

 

System.out.println("1、取款");

System.out.println("2、存款");

System.out.println("3、转账");

System.out.println("4、查询");

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

Scanner s=new Scanner(System.in);

int b=s.nextInt();

switch(b){

case 1:

a.qukuan();

break;

case 2:

a.cunkuan();

break;

case 3:

a.zhuanzhang();

break;

case 4:

a.show();

}

}

}

}

 

 

二:

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、实验截图:

 

3、结果分析:

当子类与父类拥有一样的方法,并且让一个父类变量引用一个子类对象时,到底调用哪个方法,由对象自己的“真实”类型所决定。

对象是子类型的,它就调用子类型的方法,是父类型的,它就调用父类型的方法。

如果子类与父类有相同的字段,则子类中的字段会代替或隐藏父类的字段,子类方法中访问的是子类中的字段(而不是父类中的字段)。如果子类方法确实想访问父类中被隐藏的同名字段,可以用super关键字来访问它。
如果子类被当作父类使用,则通过子类访问的字段是父类的!

【作业】思索:这种编程方式有什么不合理的地方吗?

 

 

 

从这个示例中可以看到,通过在编程中应用多态,可以使我们的代码具有更强的适用性。当需求变化时,多态特性可以帮助我们将需要改动的地方减少到最低限度。
多态编程有两种主要形式:
1)继承多态:示例程序使用的方法
2)接口多态:使用接口代替抽象基类

JAVA多态

标签:类方法   val   访问   show   并且   自己的   多态   示例   私有变量   

原文地址:http://www.cnblogs.com/zeminzhang/p/6079278.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!