在学习局部内部类时产生的一些疑问和自己的理解,请老师看看有没有错的地方或片面的地方,谢谢
还有0人有此问题
发表在Java视频课程答疑 2018-02-25
是否精华
版块置顶:

局部内部类是在方法体内的类。

关于局部内部类的几个疑问:

1.外部类若想引用内部类的方法,是否可以像对待成员内部类那样再次书写一个方法来引用内部类方法?

答:不可以,因为内部类的对象都创建不出来,Java报错显示无法解决,另外一个方法引用另一个方法这没有问题,但是在局部内部类中这种

方式就演变成了一个方法引用另外一个方法体了,所以肯定是不行的。

2.包含内部类的方法必须返回该类么?

答:是的,若没有返回该类,在外部类引用含有内部类的方法时由于输出语句在内部类中,该语句无法输出,同时也不可以将该语句写在内部类

之外,写在外面无法引用类中的内容,所以必须返回类

3.包含内部类的方法的返回语句若有输出语句是否也可以输出?

答:不可以,直接输出赋初值的构造方法Java会报错,因为局部内部类无法直接或间接创建对象,只能通过方法来返回对象。但是,若方法中

的设定值无法传入类中方法体内,则会输出初值。

4.可以像对待成员内部类那样在主方法中书写创建内部类对象的语句么?

答:不可以,Java会报错,显示无法解决

5.在参数传递过程中,只能让内部类中方法的参数=外部类中方法的参数,输出内部类方法参数,不可以反过来,一正一反有根本意义上的区别,只能让外部类方法

的参数赋值给内部类方法的参数,若反过来,则是让内部类中方法参数赋值给外部类方法参数,这不符合逻辑。

6.关于接口的定义,接口是可以独立于类体之外的,不论是主类还是内部类。

7.虽然返回对象有赋初值,但是方法体中再次赋值,故输出的是再次赋的值。

8.返回的值没有相应的输出语句,也可以打印出来么?

答:这个问题问法有问题,构造方法含有参数的,在创建这个对象时就必须输入相对应类型的参数,创建对象的过程其实就是调用构造方法的过程,在这个过程中,

已经把参数传入输出语句,故可以输出。

package pers.yanzhenkei;

public class Demo  {                                       
 
 public Demo(int y) {
  
  System.out.println(y);
 }
 public static void main(String args[]) {
  
  Demo a=new Demo(6);
 }
 
 
}

package pers.yanzhenkei;

public class Demo {                                              //外部类
 
 public OutInterface outshow(String x) {                  //包含内部类的方法
  
  class InnerClass implements OutInterface{        //局部内部类
   

   public InnerClass(String y) {            //局部内部类的构造方法
    
    y=x;
    
    System.out.println(y);           //输出语句
   }
   
  
  }
  
  return new InnerClass("do");                     //创建对象时初始值是do
  
 }
      public static void main(String args[]) {                 //主类中的主方法
  
  Demo a = new Demo();                             //创建外部类对象
  
  a.outshow("我是局部内部类");                     //在方法中再次传入设定值
  
  System.out.println("---end---");                 //程序运行结束
 }
}
    interface OutInterface{                                      //为实现返回类的对象而设置的接口
 
 
}



分享到:
精彩评论 1
根号申
学分:4736 LV12
TA的每日心情
2021-07-16 23:48:46
2018-02-26
沙发

1.视频中介绍的就是局部内部类实现接口,外部类创建的接口对象就是有局部内部类实现的,接口对象调用的方法就是由局部内部类实现的。局部内部类在局部作用域中是可以创建对象的。视频中方法的返回值就是局部内部类对象。

2.包含局部内部类的方法不一定要返回局部内部类对象,视频只是一个例子。

3.如果输出语句指的是System.out.println()方法,只要内部类方法被调用,输出语句就会执行。我没理解你说的“输出赋初值的构造方法”是什么意思。局部内部类在作用域范围内可以所以创建对象,超过作用域范围则不能创建对象。

4.主方法也是方法,可以创建局部内部类,只不过主方法没有返回值而已。

5.外部类方法的作用域包含局部内部类的作用域,所以外部类可以给内部类赋值,

6.接口就是一个特殊的类,定义接口的方式与类一样。

7.是的。

8.print就是打印的意思,只要print()方法或println()方法才会在控制台中打印信息。


首页上一页 1 下一页尾页 1 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照