相关疑难解决方法(0)

实例方法和变量的情况下的java继承解析

根据java,实例方法解析基于参数的运行时类型.

但是在解析实例变量时,它使用不同的方法,如下所示.

节目输出是......

Child
Parent
ParentNonStatic
Run Code Online (Sandbox Code Playgroud)

这里第一个输出基于参数的运行时类型,但第三个输出不是.

任何人都可以解释一下吗?

  public class Child extends Parent {

        public static String foo = "Child";
        public String hoo = "ChildNonStatic";

        private Child() {
            super(1);
        }

        @Override
        String please() {
            return "Child";
        }

        public static void main(String[] args) {
            Parent p = new Parent();
            Child c = new Child();

           //Resolving method
            System.out.println(((Parent) c).please());

           //Resolving Static Variable
            System.out.println(((Parent) c).foo);

           //Resolving Instance Variable
            System.out.println(((Parent) c).hoo);
        }
    }
class Parent {

    public static String foo = "Parent";
    public String …
Run Code Online (Sandbox Code Playgroud)

java variables methods inheritance resolution

2
推荐指数
1
解决办法
1030
查看次数

如果我们已经拥有超类的子类,我们如何调用超类方法?

我的问题是,如果有一个由父类扩展的子类,并且由祖父类扩展,那么子类如何直接访问祖父的方法.

java

2
推荐指数
1
解决办法
724
查看次数

Super()关键字...它可以用来调用一个以上超类的构造函数吗?

我想我错过了一些东西,或者没有点击我的东西.我正在读一本关于java的书,我刚学到了super().当用于获取构造函数时,它从一个超类中获取构造函数,对吗?如果你想去两个超级课程怎么办?怎么办呢?

有些东西并没有坐在我的大脑中,我希望这个问题可以帮助我把各个部分放在一起.

java inheritance

2
推荐指数
1
解决办法
2658
查看次数

如何直接访问m1()方法中的A类变量?

class A {
    int i = 10;
}

class B extends A {
    int i = 20;
}

public class C extends B{
    int i = 30;

    public static void main(String[] args) {
        C c = new C();
        c.m1();
    }

    public void m1() {
        System.out.println(i);       // 30
        System.out.println(super.i); // 20
    }
}
Run Code Online (Sandbox Code Playgroud)

我有一个A类,它包含一个默认变量.我创建子类延伸类和一个以上的子类Ç延伸类.

我想在子类C方法中访问类A变量.有没有直接访问它的方法? m1()

java

2
推荐指数
1
解决办法
99
查看次数

是否有相当于super.super()的东西?

我知道你可以super.super.methodName()用来调用祖父母的方法版本,但有没有办法在链式构造函数调用中直接调用祖父母类的构造函数?

(简体)示例:

 class A {
    public A(){}
    public A(int i, boolean b) {
        /*...*/
    }
}

class B extends A {
    public B(){}
    public B(int i) {
        super(i, true);
    }

}

class C extends B {
    public C(int i)
        {
        super.super(i,false);  //This is not allowed, but you 
            //can see what I'm trying to do (call A(i,false).) 
            //this=new A(i,false); also doesn't work b/c this can't be LHS
            //of assignment
        }
}
Run Code Online (Sandbox Code Playgroud)

..或者这是不允许的,我是否只是在尝试在(父)超类中使一个super.superclass(祖父母)构造函数调用不可能的时候证明了这样做的原因?

java

0
推荐指数
1
解决办法
86
查看次数

标签 统计

java ×5

inheritance ×2

methods ×1

resolution ×1

variables ×1