相关疑难解决方法(0)

如何从派生类函数调用父类函数?

如何使用C++从派生类调用父函数?例如,我有一个名为的类parent,以及一个child从父派生的类.每个班级都有一个print功能.在孩子的打印功能的定义中,我想调用父母的打印功能.我该怎么做呢?

c++ oop inheritance

563
推荐指数
6
解决办法
59万
查看次数

当toString()和hashCode()被覆盖时,如何获取java中对象的"对象引用"?

我想在Java中打印对象的"对象引用"以进行调试.即根据情况确保对象是相同的(或不同的).

问题是有问题的类继承自另一个类,它覆盖了toString()和hashCode(),它们通常会给我id.

示例情况:运行多线程应用程序,其中我(在开发期间)想要检查所有线程是否使用相同的资源对象实例.

java object hashcode

100
推荐指数
4
解决办法
11万
查看次数

为什么界面中的所有字段都是隐式静态和最终的?

我只是想了解为什么在接口定义的所有域都默认staticfinal.保持字段的想法static对我来说是有道理的,因为你不能拥有接口的对象,但为什么它们final(隐含地)?

任何人知道为什么Java的设计者在接口使得场去staticfinal

java static final interface language-implementation

94
推荐指数
4
解决办法
9万
查看次数

为什么嵌套子类可以访问其父类的私有成员,但孙子不能?

可能类似于问题,为什么外部Java类可以访问内部类私有成员?使用子类中的super关键字访问超类私有字段.

但是存在一些差异:子类可以访问其父级(并且只有最近的父级)的私有成员.

鉴于以下示例代码:

public class T {

    private int t;

    class T1 {
        private int t1;

        public void test() {
            System.out.println(t);
        }
    }

    class T2 extends T1 {

        private int t2;

        public void test() {
            System.out.println(t);
            System.out.println(super.t1);
            System.out.println(this.t2);
        }
    }

    class T3 extends T2 {

        public void test() {
            System.out.println(t);
            System.out.println(super.t1); // NG: t1 Compile error! Why?
            System.out.println(super.t2); // OK: t2 OK
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

java visibility inner-classes

50
推荐指数
3
解决办法
4012
查看次数

java可以在其他对象中调用父重写方法但不能调用子类型吗?

这是工作的java代码

class Cup {
    public String sayColor() {
        return "i have a color .";
    }
}

class TCup extends Cup{
    public String sayColor(){
        System.out.println(super.getClass().getName());
        return super.sayColor()+"color is tee green.";
    }
}

class MyTCup extends TCup {
    public String sayColor(){
        System.out.println(super.getClass().getName());
        return super.sayColor()+"but brushed to red now!";
    }
}
class Test {
    public static void main(String[] args) {
        Cup c = new MyTCup();
        System.out.print(c.sayColor());
    }
}
Run Code Online (Sandbox Code Playgroud)

并运行Test类打印

MyTCup
MyTCup
i have a color .color is tee green.but brushed to red now! …
Run Code Online (Sandbox Code Playgroud)

java overriding

36
推荐指数
1
解决办法
8万
查看次数

调用超级超类方法

假设我有三个A,B和C类.

  • B延伸A.
  • C延伸B.

都有public void foo()定义的方法.

现在从C的foo()方法我想调用A的foo()方法(不是它的父B的方法,而是超级超类A的方法).

我试过super.super.foo();,但这是无效的语法.我怎样才能做到这一点?

java inheritance overriding

35
推荐指数
2
解决办法
3万
查看次数

Java:如何访问两个级别的父类方法?

我有一个类,它扩展了我需要覆盖的类,但我需要调用该类的父类.因为我不能打电话给super因为那将执行直接父母什么是获得我父类的父母的最佳方式?

我确信这是一个基本问题,但是我已经做了一段时间了.

class A
{
 public void myMethod()
 { /* ... */ }
}

class B extends A
{
 public void myMethod()
 { /* Another code */ }
}

class C extends B
{
 I need to call Class A here
 { /* Another code */ }
}
Run Code Online (Sandbox Code Playgroud)

java inheritance

27
推荐指数
3
解决办法
2万
查看次数

Java如何调用盛大父母的方法?

可能重复:
为什么是super.super.method(); Java不允许?

假设我有3个类A,B并且C每个类都扩展了前一个类.

如何调用代码A.myMethod()C.myMethod()如果B也实现myMethod

class A
{
  public void myMethod()
  {
    // some stuff for A
  }
}

class B extends A
{
  public void myMethod()
  {
    // some stuff for B
    //and than calling A stuff
    super.myMethod();
  }
}

class C extends B
{
  public void myMethod()
  {
    // some stuff for C
    // i don't need stuff from b, but i need call …
Run Code Online (Sandbox Code Playgroud)

java overriding super

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

为什么抽象类可以强制覆盖具体方法?

我使用一个库,其中一个抽象类覆盖了一个从Object抽象方法继承的具体方法:

public abstract class A {
    @Override
    public abstract boolean equals(Object obj);
}
Run Code Online (Sandbox Code Playgroud)

要扩展此类,我必须实现该equals方法:

public class B extends A {
    @Override
    public boolean equals(Object obj) {
        return obj != null && obj.getClass() == B.class;
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么抽象方法(A::equals)会覆盖具体方法(Object::equals)?我没有看到这个目标.

java abstract-class overriding object

19
推荐指数
3
解决办法
2250
查看次数

Java:如何在重写方法(祖父方法)中调用super().super()

可能重复:
为什么是super.super.method(); Java不允许?

我有3个类,他们互相继承如下:

A
 ?
   B
    ?
     C
Run Code Online (Sandbox Code Playgroud)

在每个类中,我有以下方法:

protected void foo() {
    ...
}
Run Code Online (Sandbox Code Playgroud)

课内C我想打电话foo从类A没有调用fooB:

protected void foo() {
    // This doesn't work, I get the following compile time error:
    // Constructor call must be the first statement in a constructor
    super().super().foo(); 
}
Run Code Online (Sandbox Code Playgroud)

编辑
一些上下文信息:
B类是我们使用的实际类.C类是一个单元测试类,它有一些修改.foo里面的方法B做了一些我们不想要的东西,所以我们在里面覆盖它C.但是foo在课堂A上很有用,需要调用.

java

16
推荐指数
2
解决办法
3万
查看次数