注册 登录
编程论坛 JAVA论坛

Java的问题

娱乐 发布于 2021-01-24 20:13, 3774 次点击
  class A extends B{
    public static void main(String []args) {
       B b =new B(){
       public void ee(){
      
      
       System.out.println("A A");
       }
      
       };                                     //           结果为什么不是B B
           b.ee();
   
    }
}

class B{

public void ee(){
System.out.println("B B");
}
     }
5 回复
#2
fengsheb2021-02-20 17:10
推荐一套tcc分布式事务调度器源码实现分析课程
主要是解决我们日常开发中微服务的分布式事务问题
是github上使用最多的tcc框架之一 https://
阿里分布式调度引擎框架的源码实现分析课程
这套框架主要是解决我们日常开发中task项目的集群问题
目前在github上有专业的团队在维护 https://
分布式调度引擎tbschedule是最成熟的。很多大厂都跑在线上
看完这套框架就是你自己写的
如有需要➕ 微youdao138000888
#3
linkeryy2021-03-15 12:00
说说我的理解吧,首先你A类继承了B类,这个对于你下面的操作影响不大。虽然你定义了B类,默认的无参构造器确实应该是输出BB,但是你相当于重写了这个无参的构造方法,并且用这个无参构造方法new出来的b,那肯定是输出AA的。
#4
大大哟nice2021-03-16 01:22
1.从编译的角度你可以发现不同
2.可以了解一下匿名内部类的概念

用javac A.java 编译你的代码会生成如下字节码
A$1.class
A.class
B.class

如果你的代码不涉及匿名内部类编译则会生成如下字节码
A.class
B.class

从上面可以看出匿名内部类似乎和B.class 没有关系;他是独立的;


#5
one7372021-07-04 19:52
我们来分析一下主要代码:
程序代码:

B b = new B() {
    public void ee() {
        System.out.println("A A");
    }
};

这里的b不仅仅是B类的对象引用,更是匿名内部类的对象引用。
下一句调用
b.ee();
时,就会调用匿名内部类中的ee方法,输出"A A"。
#6
风飘无殇2021-07-30 16:51
子类A重写了父类B的方法,所以打印的是A A
1