暂无权限

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

点击前往
×
问答
sand
1楼

屏幕截图 2023-01-30 114508.png这里为什么报错了啊

尚新途

你现在是什么内部类呢,静态内部类吗,把Outer和Inner的代码我看一下啊

sand

老师,后面我发现怎么怎么错了,我不小心在Inner前面加了private,谢谢啦



尚新途

好的好的

一个男人
2楼

1、为什么调用外部类的变量时候需要打印?调用外部类的方法却不需要打印?

之前做练习的时候也有过这种写法,以为都可以就没在意。这里面是不是有什么规律?

1.1.png

尚新途

没有的,我们直接调用变量是无法输出的,为了在控制台看到age的值,我们只有打印在控制台才可以看到,而调用方法,因为方法中有输出语句,所以可以直接调用方法,只要控制台输出了方法中的语句,就说明进入了方法。

3楼

image.png

尚新途

应该是哪里写错了,你先看看自己能不能检查出来,要是检查不出来,你把代码发老师微信上,老师在微信上给你检查一下。

尚新途

应该是哪里写错了,你先看看自己能不能检查出来,要是检查不出来,你把代码发老师微信上,老师在微信上给你检查一下。

D
4楼

内部类只有通过new一个对象才能访问外部类的静态方法吗?

不能直接类名.方法名来访问吗?

尚新途

image.png

是这样吗

douzhi166
5楼

image.png

  1. 老师外部类是如何直接访问内部类的public属性?

image.png

这里为什么又说外部类不能直接访问。。。

尚新途

外部类是如何直接访问内部类的public属性  new对象的时候

你new对象之后就可以对象名.方法或者属性来访问

TPP
6楼

老师我想问一下,内部类的关系表达是什么?

继承关系是is-a,组合关系是has-a。那一个外部类和一个内部类不是更像has-a吗?

有点分不清楚组合关系和内部类的差别。

尚新途

内部类和外部类之间的关系像一种寄生与宿主的关系

内部类像是寄生虫,获取宿主的东西,相对方便

外部类像宿主,不能随便获取到寄生虫的东西

 Naturally Science
7楼

老师这个是啥意思,感觉没读懂两句话,下面说外部类不能访问内部类的的内部属性,而上面又说内部类可以让外部类直接访问这两句话是不是有点毛病?image.png

尚新途

这里说的内部属性是私有属性的意思,外部类不可以直接访问内部类的私有属性,即用了private修饰符的


任仕诚
8楼
public class Face {
    private String shope = "国字脸";

    // 内部类
    class Nose{
        private String shope = "高鼻梁";

        public void breath(){
            System.out.println("鼻子长在了"+Face.this.shope+"形状的脸上"); // 调用外部类的shope
            System.out.println("呼吸,呼吸,呼吸!");
        }
    }


问题:可以在内部类中重新对外部类的shope重新赋值吗?如果可以应该怎么做?

尚新途
public class Face {
    public  String shope = "国字脸";
    public static String aa="a";
    public static void main(String[] args) {
        Face f=new Face();
        Face.Nose fn=new Face().new Nose();
        fn.change();
        System.out.println(aa);
    }
    // 内部类
    class Nose {
        private String shope = "高鼻梁";

        public void breath() {
            System.out.println("鼻子长在了" + Face.this.shope + "形状的脸上"); // 调用外部类的shope
            System.out.println("呼吸,呼吸,呼吸!");
        }
        public void change(){
            aa="b";
            Nose n=new Nose();
            n.shope="瓜子脸";

        }
    }

}

可以看一下那个字符串aa,就是通过内部类去改了。

刚刚好.
9楼

Face{

    String =Nose{
        String =String =(){
            System..println(++Face..)}
    }
    Eye{

    }

    (String[] args) {
        Face.Nose nose1= Face.Nose()nose1.break2()}
}

为什么会在new nose1时报错,image.png

尚新途

我知道了老师...


尚新途

好,注意代码的选择

神经蛙
10楼

new内部类时,格式为 Outer.Inner varname = new Outer().new Inner()

实测发现Outer.不加也能执行,这是什么原理?

尚新途

因为你要new就是内部类的类型呀,所有Outer.可以省略

神经蛙
11楼

20200727115403.png

上面说能访问,下面又说不能访问,咋回事?






尚新途

这个说的是外部尅访问内部的属性可以,但是访问不到内部类的内部属性,不如内部类的方法里的属性,外部类就访问不到了。

尚新途
/**外部类 Outer*/
class Outer {
    private int age = 10;
    public void show(){
        System. out .println(age);//10
    }
    /**内部类 Inner*/
    public class Inner {
        //内部类中可以声明与外部类同名的属性与方法
        private int age = 20;
        public void show(){
            System. out .println(age);//20
        }
    }
}

请问以上代码中,Outer怎么访问Inner中的age?


尚新途
class Outer {
    public int age=10;
public void aa(){
    System.out.println(new Outer().new Inner().age);
}
    public class Inner {
        public int age=20;
       public void aa(){
       }
    }
}
class  Test{
    public static void main(String[] args) {
        Outer o=new Outer();
        o.aa();
    }
}


尚新途

内部类的内部属性就是指内部类的局部变量吧?

尚新途

嗯嗯,对

误念
12楼

不是说一个源文件中只能有一个public类吗?为什么内部类可以使用public修饰呢?

尚新途

只能出现一个public修饰的类意思是同一个源文件中出现多个并列的类,只能有一个使用public修饰

自我检测(5S)