关于#java#的问题:想问一下这是方法重写还是匿名内部类

想问一下这是方法重写还是匿名内部类,如果都不是拿这种写法叫什么名字请告知谢谢。

img

匿名内部类的方式创建线程对象(使用匿名内部类,来传入匿名对象来重写run方法)

匿名内部类创建线程对象,一般这种写法代码固定,不易扩展。

你好,这是一个匿名内部类,它里面重写了线程的run方法,这个类继承的是Thread类,但没有名字,又在main方法内,所以是个匿名内部类。
有帮助的话采纳一下哦!

这段代码创建了一个继承Thread类的匿名内部类,并重写了超类的run方法。给出代码并没有在实际意义上利用匿名内部类,它的意义只是用Thread()无参构造器创建了一个Thread类的实例。

  1. 它是匿名内部类,因为它定义了一个新类,你去编译后的文件夹应该能找到一个系统给其自动命名的类
  2. 它也是方法重写,它继承自thread覆写了run方法,从override注解可以说明这点
  3. 编译后的信息,可以更直接的看到

    img


    img


    img

先看外层

想问一下这是方法重写还是匿名内部类?
这是匿名内部类 这里引用了run方法,继承Thread类,最后在main方法内里得到证明,所以是个匿名内部类。

Java 中可以实现一个类中包含另外一个类,且不需要提供任何的类名直接实例化。
主要是用于在我们需要的时候创建一个对象来执行特定的任务,可以使代码更加简洁。
匿名类是不能有名字的类,它们不能被引用,只能在创建时用 new 语句来声明它们。
你这个属于匿名内部类,重写了run方法

匿名内部类.
它继承自thread覆写了run方法

/**
 * 不使用匿名内部类:
 * 需要先创建一个类,如MyThead
 * 然后使用
 */
class MyThead extends Thread{

    @Override
    public void run() {
        super.run();
    }
}
class Test{
    public static void main(String[] args) {
        Thread t1 = new MyThead();
        // new MyThead() 等价于
        // new Thread(){
        //     @Override
        //     public void run() {
        //         super.run();
        //     }
        // };
        // 后者的写法即为匿名内部类(即省略了显式定义MyThead类)
        // 而匿名内部类可通过显式定义来理解,如MyThead,有继承关系,即存在方法重写
    }
}

匿名内部类,创建线程

既是匿名内部类,也重写了方法

创建线程的固定写法,匿名内部类

你这不要把自己搞混乱,匿名内部类和方法重写两件事情并不冲突;对于new这个过程来说,你使用了匿名类的方式创建了一个和源类不同的类来创建对象,但是这个不同点你采用的是方法重写的方式实现的.

您好,这是典型的匿名内部类的编码方式。