鱼C论坛

 找回密码
 立即注册
查看: 1541|回复: 8

[已解决]外部其他类访问内部类

[复制链接]
发表于 2022-7-4 20:36:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 帅雷必成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{
            private  final 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
最佳答案
2022-7-4 21:38:48


要放入方法中,你在类空间不能直接进行函数的调用,不然编译就过不了
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();
    }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-7-4 20:43:02 | 显示全部楼层


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

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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-4 20:59:37 | 显示全部楼层
Twilight6 发表于 2022-7-4 20:43
你的第二个 Car 类,只有一个含一个参数的 Car 构造器,没有 空参构造器

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

我传入参数也不行呀  , 如果是没有传入参数编译器会显示出来我没有写参数,但是编译器报错在说找不到方法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-4 21:00:07 | 显示全部楼层
Twilight6 发表于 2022-7-4 20:43
你的第二个 Car 类,只有一个含一个参数的 Car 构造器,没有 空参构造器

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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-4 21:38:48 | 显示全部楼层    本楼为最佳答案   


要放入方法中,你在类空间不能直接进行函数的调用,不然编译就过不了
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();
    }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-4 21:59:42 | 显示全部楼层
Twilight6 发表于 2022-7-4 20:43
你的第二个 Car 类,只有一个含一个参数的 Car 构造器,没有 空参构造器

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

soga ,那第一个是因为无参所以没报错吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-5 09:55:13 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-7-8 09:46:11 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-7-8 21:47:50 | 显示全部楼层

回帖奖励 +5 鱼币

学习一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-6 13:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表