在说多态之前,我们先看一段代码:
package JavaInterview;
class A {
int i;
public A() {
i = 3;
System.out.println(i);
}
void display() {
System.out.println(i);
}
}
class B extends A {
int j;
public B() {
j = 4;
System.out.println(j);
}
void display() {
System.out.println(j);
}
}
public class InheritanceDemo {
public static void main(String[] args)
{
A obj = new B();
obj.i=1;
obj.j=2; // can't reach it
obj.display();
}
}
分析这段程序的输出是什么。如果在eclipse中运行这段代码,是编译不过的,问题在于obj为A类型的,它不可以访问它的子类中的成员变量j,也就是obj.j = 2这一句是错误的。如果把这句删除之后输出结果是什么呢。答案为:3, 4, 4。如果和你想的一样那么你可以越过这篇文章了。如果不一样就看一下。首先当我们new B()的时候,程序首先调用的是父类的构造函数,然后在调用子类的构造函数。输出3,4。最后一个4是因为子类中重写了父类中的display()方法,obj虽然是A类型的,但是运行的时候,它调用的是子类中的方法。这其实就是多态的体现,满足三个条件,1. 继承,2. 重写, 3. 父类的引用变量指向子类的对象。
分享到:
相关推荐
本下例是讲解工厂模式 多态 接口 抽象 重构的经典下例子,结合一个尽可能简洁的实例来说明OOD、设计模式及...通过下面的代码,详细地阐述面向对象设计思想。体现了软件工程的三个主要目标:重用性、灵活性和扩展性。
C#面向对象编程-多态习题[整理].pdf
2024面向对象高级多态接口HM
JAVA面向对象之多态.pdf
新技术培训 培训讲义8_面向对象之多态.doc 学习资料 复习资料 教学资源
面向对象,动物练习 综合练习,抽象方法,继承,多态,多种动物的叫声。但是这是面向对象的
JAVA面向对象---多态(完结)
计算机后端-PHP视频教程. php之面向对象29 多态(选学).wmv
本文主要给大家介绍的是关于C++面向对象之多态的实现和应用的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 多态 大家应该都听过C++三大特性之一多态,那么什么多态呢?多态有什么用...
一个类的任何子类对象都可以满足以当前类型作为类型提示的类型要求。 所有实现这个接口的类,都可以满足以接口类型作为类型提示的方法参数要求。 简单的说,一个类拥有其父类、和已实现接口的身份。
Educoder题目:Java面向对象 - 封装、继承和多态答案解析
Java 面向对象三大特性之封装性的学习
Educoder题目:Java面向对象 - 封装、继承和多态的综合练习答案解析
JavaSE进阶 面向对象多态
Java实验报告
掌握类的继承、方法重写、super关键字的使用、final关键字、抽象类和接口、多态的使用以及异常的处理方式 熟悉面向对象继承和多态的概念
面向对象练习之三--多态 (抽象方法和虚方法)
java面向对象三要素封装继承和多态源码java面向对象三要素封装继承和多态源码java面向对象三要素封装继承和多态源码java面向对象三要素封装继承和多态源码java面向对象三要素封装继承和多态源码java面向对象三要素...