方法内部类

方法内部类

public Object getHeart() {
		/**
		 * 1、定义在方法内部,作用范围也在方法内
		 * 2、和方法内部成员使用规则一样。class前缀不能用public、private、protected、static修饰
		 * 3、类中不能包含静态成员
		 * 4、类中可以包含final和abstract成员
		 *
		 */
		class Heart{
			public int age=12;
			int temp=22;
			public void say() {
				System.out.println("Hello");
			}
			public String beat() {
				new Person().eat();
				return new Person().age+"岁的心脏跳动";
			}
		}
		return new Heart().beat();
//		new Heart().temp=12;
//		return new Heart();
	}

老师课上讲:定义在方法内部,作用范围也在方法内。那为什么方法运行结束后返回的new Heart()可以存在?Heart类在方法getHeart()里面,他的对象不会随着方法运行结束而回收吗?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小小 2021-07-18 14:18:40

同学你好,定义在方法内部的数据,作用范围也是在方法内部, 方法内部数据会随着方法的运行结束而回收。

getHeart()方法运行结束后new Heart()也会被回收,而getHeart()方法并不是把new Heart()作为方法的返回值,而是将new Heart().beat(),即将beat()方法String类型的返回值作为Heart类中getHeart()方法的返回值。

祝学习愉快~

  • 提问者 做条咸鱼才最好 #1

    getHeart方法的返回值是Object,为什么可以返回new Heart().beat()?beat()是方法啊,为什么可以作为Object对象返回?

    2021-07-18 15:13:19
  • 同学你好

    1、Object是是所有类的父类,即String是Object的子类。

    2、getHeart()方法返回值类型是Object,所以方法的返回值可以是Obejct类型也可以是Object的子类型。

    3、beat()是方法,但此处不是将方法返回,而是将beat方法的返回值返回,beat方法的返回值类型是String类型,所以可以将beat方法的返回值作为getHeart方法的返回值返回。

    http://img1.sycdn.imooc.com//climg/60f3f53e09f6c41304780272.jpg

    祝学习愉快~

    2021-07-18 17:46:49
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师