JAVA多态经典例题

Python015

JAVA多态经典例题,第1张

System.out.println("1--" + a1.show(b))

a1是A类引用指向A类对象,不存在多态,一定调用A类方法。A类方法有两个show(D)和show(A),b是B类引用无法转换为D类引用,但可以转换为A类引用,因此调用show(A),输出A and A。

System.out.println("2--" + a1.show(c))

输出A and A,原因同上。

System.out.println("3--" + a1.show(d))

调用show(D),输出A and D。

System.out.println("4--" + a2.show(b))

a2是A类引用指向B类对象,可能存在多态。b是B类引用无法转换为D类引用,但可以转换为A类引用,因此调用show(A),而B类重写了show(A),因此调用的是重写后的show(A),输出B and A。

System.out.println("5--" + a2.show(c))

同上,C类引用无法转换为D类引用,但可以转换为A类引用,因此调用show(A),输出B and A。

System.out.println("6--" + a2.show(d))

调用show(D),show(D)又调用父类即A类的show(D),输出A and D

System.out.println("7--" + b.show(b))

b是B类引用指向B类对象,不存在多态,一定调用B类方法。B类一共有三个方法:重写自A类的show(A)和show(D),以及新定义的show(B)。show(b)调用show(B)方法,输出B and B

System.out.println("8--" + b.show(c))

C类继承自B类,也调用show(B)方法,输出B and B

System.out.println("9--" + b.show(d))

调用show(D),show(D)又调用父类即A类的show(D),输出A and D

public class Monkey

{

public static void main(String[] args)

{

int sum=0,remain=1

//每天吃剩的桃子加一个正好是前一天桃子的一半,每天桃子的总数就是前一天剩下桃子的数量

for(int day=9day>=1day--)

{

sum=(remain+1)*2

remain=sum

System.out.println("第"+day+"天还剩"+remain+"个桃子")

}

System.out.println(sum)

}

}

按照题目要求编写的用javaBean规范设计的学生类Student的Java程序如下

需要创建user.java.test包,把Student.java文件和Test.java文件放入包中,编译Student.java文件并且编译运行Test.java文件得到运行结果

Student.java文件代码如下

package user.java.test

import java.io.Serializable

public class Student implements Serializable{

private static final long serialVersionUID = 1L

private String no

private String name

private double score

public Student(){}

public Student(String no,String name,double score){

this.no=no

this.name=name

this.score=score

}

public String getNo(){ return no}

public void setNo(String no){ this.no=no}

public String getName(){ return name}

public void setName(String name){ this.name=name}

public double getScore(){ return score}

public void setScore(double score){ this.score=score}

public String toString(){

return "学号:"+no+",姓名:"+name+",成绩:"+score

}

public static double getAvg(Student[] sArray){

double sum=0,avg

for(int i=0i<sArray.lengthi++){

sum=sum+sArray[i].getScore()

}

avg=sum/sArray.length

return avg

}

}

Test.java文件代码如下

package user.java.test

public class Test{

public static void main(String[] args){

Student[] sArray=new Student[5]

sArray[0]=new Student("001","张三",89.5)

sArray[1]=new Student("002","李四",82.5)

sArray[2]=new Student("003","王五",93)

sArray[3]=new Student("004","赵六",73.5)

sArray[4]=new Student("005","孙七",66)

System.out.println("这些学生的平均分:"+Student.getAvg(sArray))

for(int i=0i<sArray.lengthi++){

System.out.println(sArray[i].toString())

}

}

}