小编Rsa*_*leh的帖子

在java中打印对象时会发生什么

class Data {
    int a = 5;
}

class Main {
    public static void main(String[] args) {
        int b=5;
        data dObj = new data();
        System.out.println(dObj);
        System.out.println(b);
    }
}
Run Code Online (Sandbox Code Playgroud)

我想知道打印对象或数字或字符串时发生了什么.

我运行上面的代码,我得到的结果为"data @ 1ae73783"for System.out.println(dObj);和"5"forSystem.out.println(b);

然后我做了调试来检查打印对象时真的发生了什么,在调试模式中调用了很多参数(比如classloader,theards)
我知道第一次打印时,值表示类名后跟地址.但是不知道在调试模式下究竟发生了什么,因为在调试模式中发生了第二次打印变量赋值,即b = 5.

请解释一下真的发生了什么?

java object

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

"new"修饰符做什么来做出两个bM()的答案; aM(); "B"?

class A {
    public virtual void M() { Console.Write("A"); }
}

class B: A {
    public override void M() { Console.Write("B"); }
}

class C: B {
    new public virtual void M() { Console.Write("C"); }
}

class D: C {
    public override void M() { Console.Write("D"); }
    static void Main() {
        D d = new D(); 
        C c = d; 
        B b = c; 
        A a = b;
        d.M(); c.M(); b.M(); a.M();
    }
}
Run Code Online (Sandbox Code Playgroud)

我是这个概念的新手,所以详细的答案将不胜感激.

.net c# oop methods inheritance

-1
推荐指数
1
解决办法
120
查看次数

标签 统计

.net ×1

c# ×1

inheritance ×1

java ×1

methods ×1

object ×1

oop ×1