帅雷必成c王 发表于 2022-7-4 20:36:29

外部其他类访问内部类

本帖最后由 帅雷必成c王 于 2022-7-4 20:39 编辑

public class Homework05 {
    public static void main(String[] args) {
      A a = new A();//这里 外部其它类访问局部内部类方法
      a.AA();

    }
}
class A{
    private String name = "小帕";
    public void AA(){
      class B{
            privatefinal String name = "类一起";
            public void show(){
                System.out.println("NAME=" +name );
                System.out.println(A.this.name);
            }
      }
      B b = new B();
      b.show();
    }
}






public class Homework07 {
    public static void main(String[] args) {
      Car car = new Car();
      Car.a.flow();
    }

class Car {
    private double temperature;

    public Car(double temperature) {
      this.temperature = temperature;
    }

    class Air {
      public void flow() {
            if (temperature > 40) {
                System.out.println("吹冷气");
            } else if (temperature < 0) {
                System.out.println("吹暖气");
            } else {
                System.out.println("关闭空调");
            }
      }
    }

    Air a = new Air();
    a.flow();

}


??? 同样都是成员内部类,为什么第一个可以直接在外部类里面new 一个对象 然后调用方法
第二个就不行0.0

Twilight6 发表于 2022-7-4 20:43:02



你的第二个 Car 类,只有一个含一个参数的 Car 构造器,没有 空参构造器

而你创建实例时 new Car() 使用的是空参构造器 导致报错

帅雷必成c王 发表于 2022-7-4 20:59:37

Twilight6 发表于 2022-7-4 20:43
你的第二个 Car 类,只有一个含一个参数的 Car 构造器,没有 空参构造器

而你创建实例时 new Car()...

我传入参数也不行呀, 如果是没有传入参数编译器会显示出来我没有写参数,但是编译器报错在说找不到方法

帅雷必成c王 发表于 2022-7-4 21:00:07

Twilight6 发表于 2022-7-4 20:43
你的第二个 Car 类,只有一个含一个参数的 Car 构造器,没有 空参构造器

而你创建实例时 new Car()...

{:10_254:}

Twilight6 发表于 2022-7-4 21:38:48

帅雷必成c王 发表于 2022-7-4 21:00



要放入方法中,你在类空间不能直接进行函数的调用,不然编译就过不了

public class Homework07 {
    public static void main(String[] args) {
      Car car = new Car(1.0);
      car.a.flow();
    }

    static class Car {
      private double temperature;

      public Car(double temperature) {
            this.temperature = temperature;
      }

      class Air {
            public void flow() {
                if (temperature > 40) {
                  System.out.println("吹冷气");
                } else if (temperature < 0) {
                  System.out.println("吹暖气");
                } else {
                  System.out.println("关闭空调");
                }
            }
      }

      Air a = new Air();
    }
}

帅雷必成c王 发表于 2022-7-4 21:59:42

Twilight6 发表于 2022-7-4 20:43
你的第二个 Car 类,只有一个含一个参数的 Car 构造器,没有 空参构造器

而你创建实例时 new Car()...

soga ,那第一个是因为无参所以没报错吗

hornwong 发表于 2022-7-5 09:55:13

{:5_108:}

2360620558 发表于 2022-7-8 09:46:11

{:10_298:}

kerln888 发表于 2022-7-8 21:47:50

{:10_256:}{:10_256:}{:10_256:}学习一下
页: [1]
查看完整版本: 外部其他类访问内部类