小编Ант*_*нов的帖子

Java中的超级关键字,有趣的行为,请解释一下

可以说我们有以下代码:

class A {

    public void doLogic() {
        System.out.println("doLogic from A");
    }
}

class B extends A {

    @Override
    public void doLogic() {
        System.out.println("doLogic from B");
    }

    public void doDifferentLogic() {
        System.out.println("doDifferentLogic from B");
        super.doLogic();
    }
}

class C extends B {

    @Override
    public void doLogic() {
        System.out.println("doLogic from C");
    }
}

public class Test {

    public static void main(String[] args) {
        C c = new C();
        c.doDifferentLogic();
    }
}
Run Code Online (Sandbox Code Playgroud)

当我们执行这段代码预期的行为是:由于C拥有一个参考对象C类的,当你调用c.doDifferentLogic()的JVM搜索在C类中的方法方法,因为它没有发现它开始盯着继承树.正如预期的那样,该doDifferentLogic()方法可以在超类中找到并执行.然而,构造super.doLogic()期望从当前引用的"Point of View"看起来是C类型的.因此C的超级应该是B,而是调用来自顶级A的方法.

如果删除 …

java inheritance super

25
推荐指数
1
解决办法
4244
查看次数

使用Java反转单词而不使用任何特定于语言的函数

我一直在浏览我公司提出的Java面试问题,并遇到了一个我似乎无法找到解决方案的问题.

这是一个问题:

请编写一个方法(函数)接受一个字符串作为单个参数并反转该字符串中单词的顺序.

" "是单词分隔符,任何其他char都被视为单词的一部分.为了简化,请考虑单词之间总是有一个空格.

重要 -你不要允许使用其他字符串或数组或其他数据结构包含几个要素-只是普通的原子变量,如整数,字符等.

此外,除了给出字符串长度的函数之外,不允许使用任何其他语言特定的字符串函数.

预期结果:

"hello my beautiful world" -> "world beautiful my hello"
Run Code Online (Sandbox Code Playgroud)

所以,我不能使用:chars[],str.split(),str.charAt(),str.substring(),StringBuilder,字符串的另一声明.

我应该使用递归来做吗?

java string reverse

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

标签 统计

java ×2

inheritance ×1

reverse ×1

string ×1

super ×1