「java多态练习」java多态实现是
本篇文章给大家谈谈java多态练习,以及java多态实现是对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、JAVA多态经典例题
- 2、java多态性的编程题目
- 3、JAVA多态性
- 4、java继承多态的练习题
- 5、Java类的多态练习
JAVA多态经典例题
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
java多态性的编程题目
public class People {
private String name;
private Integer age;
private String phone;
public String getMessage() {
return "People: 姓名:"+name+",年龄:"+age+",电话:"+phone;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
public class Student extends People{
private Integer id;
public String getMessage(Integer id) {
return "Student: 姓名:"+super.getName()+",年龄:"+super.getAge()+",电话:"+super.getPhone()+",学号:"+id;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
}
public class S {
public static void main(String[] args) {
Student student = new Student();
student.setId(13);
student.setName("李三");
student.setAge(18);
student.setPhone("123-4567-8901");
System.out.println(student.getMessage(student.getId()));
}
}
JAVA多态性
亲,f.son2()方法调用不对呀!!
f是Father类的实例,它没有son2()方法,你是想用练习多态性,但我告诉你,你对多态性的理解不对,我给你讲一下,你认真看一下,就明白了.
你这个没有体现出来多态性,原因很简单,因为多态性有3个必备条件:
1)要有继承 //这个是对的,你的Son1 extends Father!
2)要有重写 // 你注意一下:你的son2()方法和 Father类一点关系没有,因为它是子类新添的方法!!
3)要父类引用指向子类对象 //这个你也对,就是Father f=new Son1();
你的例子没有符合弟2个条件。具体到你的例子中:你的Son2类中的
public String son2(){
return "son2";
}
方法不是重写Father类中的。而是新生的。明白?只有子类方法重写父类方法时,才可以考虑是不是符合动态绑定原则(多态性)。
我给你改一下,你试试吧:
在父类中添加方法:
public String person(){
return " I'm father!!";
}
同样在子类Son1中重写该方法:
public String person(){
return" I'm son!!";
}
之后你再在main方法中调用:
Father f=new Son1();
System.out.println(f.person());
这样一定打印出来了:I'm son!!,而不是I'm faher!!
这样的才叫做动态绑定!!不知道我说明白没有啊?
java继承多态的练习题
Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。
java多态存在的三个必要条件:
1.需要有继承关系的存在
2.需要有方法的重写
3.需要有父类的引用指向子类对象
希望对你有帮助。
第一题应该选D,第二题选C,D。
第一题属于多态,methodB()方法属于子类,父类没有重写子类的方法
第二题属于继承,子类可以继承父类的方法
Java类的多态练习
public class Exam
{
public static void main(String[] args)
{
for(Shape s : new Shape[] {new Rectangle(8,6),new Circle(10)})
{
System.out.println(s.getDescription());
System.out.println(String.format("面积:%.1f",s.getArea()));
}
}
}
abstract class Shape
{
abstract String getDescription();
abstract double getArea();
}
class Rectangle extends Shape
{
Rectangle(double l,double w)
{
length=l;
width=w;
}
public String getDescription()
{
return String.format("长为%.1f,宽为%.1f的长方形!",length,width);
}
public double getArea()
{
return length*width;
}
private double length,width;
}
class Circle extends Shape
{
Circle(double r)
{
radius=r;
}
public String getDescription()
{
return String.format("半径为%.1f的圆!",radius);
}
public double getArea()
{
return Math.PI*radius*radius;
}
private double radius;
}
关于java多态练习和java多态实现是的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。