鱼C论坛

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

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

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

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

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

x
本帖最后由 帅雷必成c王 于 2022-7-4 20:39 编辑
  1. public class Homework05 {
  2.     public static void main(String[] args) {
  3.         A a = new A();  //这里 外部其它类访问局部内部类方法
  4.         a.AA();

  5.     }
  6. }
  7. class A{
  8.     private String name = "小帕";
  9.     public void AA(){
  10.         class B{
  11.             private  final String name = "类一起";
  12.             public void show(){
  13.                 System.out.println("NAME=" +name );
  14.                 System.out.println(A.this.name);
  15.             }
  16.         }
  17.         B b = new B();
  18.         b.show();
  19.     }
  20. }
复制代码






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

  6. class Car {
  7.     private double temperature;

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

  11.     class Air {
  12.         public void flow() {
  13.             if (temperature > 40) {
  14.                 System.out.println("吹冷气");
  15.             } else if (temperature < 0) {
  16.                 System.out.println("吹暖气");
  17.             } else {
  18.                 System.out.println("关闭空调");
  19.             }
  20.         }
  21.     }

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

  24. }
复制代码



??? 同样都是成员内部类,为什么第一个可以直接在外部类里面new 一个对象 然后调用方法
第二个就不行0.0
最佳答案
2022-7-4 21:38:48


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

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

  6.     static class Car {
  7.         private double temperature;

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

  11.         class Air {
  12.             public void flow() {
  13.                 if (temperature > 40) {
  14.                     System.out.println("吹冷气");
  15.                 } else if (temperature < 0) {
  16.                     System.out.println("吹暖气");
  17.                 } else {
  18.                     System.out.println("关闭空调");
  19.                 }
  20.             }
  21.         }

  22.         Air a = new Air();
  23.     }
  24. }
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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


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

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

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

我传入参数也不行呀  , 如果是没有传入参数编译器会显示出来我没有写参数,但是编译器报错在说找不到方法
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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


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

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

  6.     static class Car {
  7.         private double temperature;

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

  11.         class Air {
  12.             public void flow() {
  13.                 if (temperature > 40) {
  14.                     System.out.println("吹冷气");
  15.                 } else if (temperature < 0) {
  16.                     System.out.println("吹暖气");
  17.                 } else {
  18.                     System.out.println("关闭空调");
  19.                 }
  20.             }
  21.         }

  22.         Air a = new Air();
  23.     }
  24. }
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

soga ,那第一个是因为无参所以没报错吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-5 09:55:13 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-7-8 09:46:11 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

回帖奖励 +5 鱼币

学习一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-15 03:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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