暂无权限

加入尚新途,才有权限看这些视频哦!

点击前往
×
问答
ᝰꪶಇꫀ⁴
1楼

image.png

尚新途

普通方法调用必须通过对象名调用,而t就是上面这个对象的对象名。直接输入方法名这种是被static修饰的方法在本类中调用才可以使用。

Rally_YJ
2楼

老师这里的逻辑不太懂

image.png

尚新途

因为我们要在test1方法中调用线程的run方法,所以必须要传入一个对象,否则无法调用,不可以的,tac是对象,并不是方法,我们要调用方法。

是娇妹呀~?
3楼
这是这么一回事呢

image.png

尚新途
public void show(){
    class Inner3{
        public void fun(){
            System.out.println("hello");
            
        }
    }
    new Inner3().fun();
}

正确写法如上。

柒之鱼
4楼

老师我这里报错了

image.png

尚新途

一个Java文件里面只能有一个公开的public类哦,而且还要保证公开类的类名和文件名一致的。

尚新途

那应该怎么改呢?


尚新途

那应该怎么改呢?


尚新途

只留一个public,其他的都不写public使用默认的访问修饰符,class  a{}这样的

尚新途

我把public删了但是结果还是一样

image.png

尚新途

老师没事了,我知道哪错了

尚新途

文件名要和公开类的类名一致哦

菜鸟一枚
5楼
//通过 new 外部类名。内部类名() 来创建内部类对象
Outer2.Inner2 inner = new Outer2.Inner2();
inner.test();

老师这两行代码能详细讲解一下思路不

有点没理清楚。。

尚新途

这个是Inner2这个类,是创建在Outer2这个类中的一个内部类。
正常new对象的话直接new Outer这个类就可以了,但是要是new 内部类的话,就要先new他的外部类对象,然后在这个对象后面加上.Inner2()才能够得到这个类。
不能直接new Inner2这个类,因为这个类是在另一个类的内部。

petrichor
6楼

3.png老师,我的代码应该没写错,为什么运行匿名内部类的时候乱码了?

尚新途

把匿名内部类中的重写方法中输出语句的中文,删掉重写就可以了。

尚新途

试过了,还是一样的结果,我把匿名内部类又重写了一遍,也没有用。

尚新途

修改idea的编码,改为utf-8,之后重写你的中文部分代码。

可乐先生
7楼

图片.png

一直没太理解方法为什么可以这么写 这个test1(A a)中的A a指的是什么参数呢?

尚新途

下面不是有一个接口A吗,这个就是test1方法里需要一个A接口类型的,形参是a。你把接口看成是一个特殊的类。

李某某丶ing
8楼

老师,这2个写法都可以嘛?我看视频是用的第一个写法,我用第二个写法也没报错也能运行

class Outer{
    private int age = 10;
    public void show(){
        System.out.println(age);
    }
    public class Inner1 {
        private int age = 20;
        public void show(){
            System.out.println(age);
            System.out.println(Outer.this.age);
        }
    }

    public static void main(String[] args) {
       /* Outer outer = new Outer();
        Inner1 i = outer.new Inner1();
        outer.show();
        i.show();*/
        Outer.Inner1 i = new Outer().new Inner1();
        i.show();
        Inner1 inner1 =new Outer().new Inner1();
        inner1.show();

    }
}

1634116475(1).jpg

尚新途

没有区别的,一样的~

我爱学习
9楼

image.png

老师,划线部分不明白,为啥可以这样写,能具体说一说吗

尚新途

红框相当于是绿框的简写,这里就是把AA对象实例化出来,调用它里面的test方法。

image.png

这种方法就是不实例化对象了,定义了run方法以后直接调用了,一次性的。

image.png



我爱学习
10楼
package com.bjsxt.test3;

public class TestAnonymousInnerClass {
    public void test(A1 a){
        a.run();
    }
    public static void main(String[] args){
        TestAnonymousInnerClass t=new TestAnonymousInnerClass();
        t.test(new AA());
        t.test(new A1() {
            @Override
            public void run() {
                System.out.println("TestAnonymousInnerClass.run");
            }
        });


    }
}
class AA implements A1{
    @Override
    public void run() {
        System.out.println("AA.run");
    }
}
interface A1{
    void run();
}

老师,为啥接口A成为了匿名类。实现类AA不是

尚新途

你返回去看看前面的视频,接口就是这么定义的,和类没有关系,只是类实现这个接口。

而接口需要类来实现,得知道哪个类实现了这个接口,所以AA并不能是匿名的。

Luhuan
11楼
A01 {
    (){}(String str){
        System..println(str)}

    (){
        System..println()}

}

Test03 {
    (A01 a){
        a.runA01()}

    (String[] args) {
        Test03 t = Test03()t.runT01(A01())}
}

1. 请问下面这一句算不算匿名内部类的使用?为什么?

t.runT01(new A01());

2. 匿名内部类是否只能和接口或者抽象父类联合使用?是否有匿名内部类继承非抽象父类的案例?

尚新途

代码乱码了

任仕诚
12楼
// 接口A
interface A{
    void run();
}

// 有名字的类,可以反复使用  
class AA implements A{
    @Override
    public void run() {
        System.out.println("AA.run");
    }
}

public class TestAnonymousInnerClass {

    public void test(A a){
        a.run();
    }  
    public static void main(String[] args) {
    TestAnonymousInnerClass tai = new TestAnonymousInnerClass();
    // 调用test方法 通过new AA() 创建实现类AA的对象并传入 这里调用的重写后的run()方法
    tai.test(new AA());
    }

1、老师,这里的tai,test(new AA())算是匿名内部类吗?

2、new TestAnonymousInnerClass(); 这样直接new,前面没起名字的就是匿名么?


尚新途

1、老师,这里的tai,test(new AA())算是匿名内部类吗?

不算

new TestAnonymousInnerClass(); 这样直接new,前面没起名字的就是匿名么?

这个是匿名函数,这个对象只实例化一次就已经被回收了。

Casualed
13楼

老师匿名内部类的时候为什么还可以new接口啊

尚新途

这实质上是使用匿名接口来实现匿名内部类的, 匿名接口这样写是会自动生成一个 实现了该接口的匿名类

尚新途

哦哦

尚新途

Hugo
14楼

图片.png

图片.png图片.png

在网上看到一个这个,和老师说的语法不太一样

尚新途

image.png

没有问题,在语法中有个细节没有注意就是最后大括号后面要跟上分号

Hugo
15楼

什么是匿名内部类,具体的定义是什么,可以在举一个例子吗

尚新途

https://www.cnblogs.com/wuhenzhidu/p/anonymous.html

可以参考一下这个文章,里面有案例,讲述比较清楚

自我检测(5S)