你的代码写的有问题啊,首先z要继承f才行,当创建抽象类f的对象时,其实只是在栈内存创建一个a,此时的a并没有具体的引用也没有实例化,当用一个子类对象实例化或者说创建时,会在堆内存中开辟一个空间存放z对象的内容,然后用用a去指向堆内存中的z对象,本质也就是把z对象地址赋给a,让a引用z的对象,所以之后可以相当于操作子类z创建的对象,但不同的是,操作的方法必须是f中有的,f中有的z没有是不能操作的。
正确代码是:
- abstract class f
- {
- abstract void read();
- }
- class z extends f
- { public void read()
- {
- System.out.println("Hello");
- }
- }
- class Demo
- {
-
- public void main(String[] argments)
- {
- f a=new z();
- a.read();
- }
- }
复制代码 |