this is called object reference assignment conversion.
note:
"file" must be a subclass of the "read"
you can find something useful in a book "complete java 2 certification study guide"
note:
"file" must be a subclass of the "read"
you can find something useful in a book "complete java 2 certification study guide"
解决方案 »
- java图片读取
- 跪求:Provider org.apache.xerces.jaxp.DocumentBuilderFactoryImpl could not be instantiated是什么问题
- 有两个概念我老是弄不清楚
- 有关Sockets 和 xmlbean 的使用,在xmlbean.xxx.parse()时一直死等。
- 新手学习Java,问一个关于抽象类的问题,请大家帮忙!!!
- 看看这个程序....多态在哪儿?
- 100分求定时读取某目录下所有txt文件并把txt文件的内容插入oracle数据库的程序:
- 如何做类似与Jbuilder用户界面的界面,急。
- 看看我的"Hello World!"java程序,是哪里出错了?
- 我不想把我编的程序放在bin里面,如何配置!
- 请问在WINDOWS下用什么软件解开JAR类型文件?
- 关于break mylabel;的简单问题,快来抢分
read rf=new file();
这样声明的是:rf是指向file对象的read指针,其本质是read对象,不管你用什么对象实例化你的指针, 关键是他原来是什么类型,就调用谁的方法.
read rf=new read();这样有错误吗?
rf是read对象,其本质是read对象,但是是用其子类构造方法实例化的,因此他可以引用在其超类的方法和成员,但不能引用在其子类中新的成员,关键是他原来是什么类型,就调用谁的方法.
所以说这样是很恶劣的写法,这个例子是提醒你注意这个问题的: 不要试图重载父类的变量;一定要避免和父类或者祖先的变量同名。当初我维护扫毒引擎的时候就有很多这样的bug,头疼的一塌糊涂
package untitled1;
import java.io.*;
public class ButtonTest
{
public static void main(String[] args)
{
read rf=new file();
System.out.println(rf.i);
System.out.println(rf.getI());
}
}
class read
{
public int i=1;
int getI(){
return 1;
}
}
class file extends read
{
public int i=3;
int getI(){
return 3;
}
}
派生类的对象FILE可以直接赋予他的父类READ对象
当调用重贼的int i时,系统将根据实际实例的对象动态联编
表现在这里:read rf=new file();//实例的FILE对象赋予READ对象
System.out.println(rf.i);//调用READ对象的i
因此最后的输出结果是1
怎么样解释的还够清楚吧:)
用父类的句柄指向子类的对象,是为了实现动态绑定。即我们在调用父类句柄的方法时,我们不知道(也不想知道)它是哪个子类的对象,java会自己在运行时去调用它子类对象的方法。这在我们设计类结构良好,易于扩展等等。多型是OO的一种基本特征。我说的不行。
你看看关于java多态性的教程或帮助,就清楚了。
呵呵。