注册 登录
编程论坛 JAVA论坛

多态的相关问题

yu1543054075 发布于 2015-06-01 17:47, 405 次点击
class A {
    public void f() {
    System.out.println("AAAA");
 }
}
class B extends A {
    public void f() {
    System.out.println("BBBB");
 }
  public void g() {
  System.out.println("CCCC");
 }
}
 
public class Test4 {
    public static void main(String[] args) {
        A aa = new A();
        B bb = new B();
        
        aa = bb;
        bb = (B)aa;
        aa.f();
        aa.g();
    }
}
不知道哪里出错了,我想要实现aa.g()
5 回复
#2
林月儿2015-06-01 18:50
aa是父类A的对象,并没有void g()这个方法
#3
日知己所无2015-06-01 18:52
对啊对啊,g是A的子类B里面定义的方法,父类A没有办法访问的
#4
yu15430540752015-06-01 20:30
有什么方法可以访问吗
#5
林月儿2015-06-01 20:34
回复 4楼 yu1543054075
aa是父类A的对象,并没有void g()这个方法
那么,答案很明显,类A加上这个方法就好了
#6
秦时的明月夜2015-06-01 20:36
程序代码:
  A1 aa = new A1();
        B1 bb = new B1();
        
        aa = bb;//虽然你把子类赋给了父类,但是父类中并没有g()这个属性,aa里存的是bb内存中的东西
        
//aa在调用的时候自然找不到属性,你可以把它当成c语言的指针问题来看待,在这里叫引用……
        bb = (B1)aa;
        aa.f();
        aa.g();
1