外部类怎么输出内部类的成员?

外部类怎么输出内部类的成员?

public class Person {
	public int age;
	
//创建一个获取内部类方法
	public Heart getHeart() {
		new Heart().temp=110; //外部类访问内部类属性需要通过内部类实例 无法直接访问
		System.out.println(new Heart().temp);
		return new Heart();
	}
	
//创建一个外部类方法
	public void eat() {
		System.out.println("人会吃东西");
	}
	
	class Heart{
		int age=15; //优先访问内部类定义属性
		int temp;

//创建一个与外部类同名的内部类方法
		public void eat() {
			System.out.println("我是内部类吃东西方法");
		}	
		
//创建一个内部类独立方法		
		public String beat() {
			eat(); //内外同名方法优先调用内部类
			return Person.this.age+"岁的心脏在跳动"; //访问外部类同名信息
		}
	}
	
	
	
	
	
}
public class PersonTest {
	public static void main(String[] args) {
		//访问外部类
		Person lili=new Person();
		lili.age=12;
		System.out.println(lili.getHeart().temp);
		}
	}

老师课程中外部类中也可以访问内部类成员 不过要通过内部类的实例 

但是我为什么不能输出temp的结果呢 ?输出了也为0 不知道怎么理解了 

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

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

2回答
好帮手慕小班 2019-11-18 17:16:07

同学你好,1、new  Heart()--》调用new关键字,创建一个新的Heart类型的对象。所以每次的new Heart()都是创建一个新的Heart对象。

        2、输出前那一句赋值不算吗

    如下的赋值语句:

http://img1.sycdn.imooc.com//climg/5dd2608b0958a09c07870171.jpg

new  Heart()创建一个新的Heart对象,如上所示,第7行调用new 关键字创建一个Heart对象,对这个对象的temp属性赋值为110,在第八行的输语句中,又创建一个新的Heart类型的对象,输出这个新的Heart类型的对象temp属性,此时的temp属性还是初始值0。

        3、调用外部类给内部类的某个属性赋值,例如:

http://img1.sycdn.imooc.com//climg/5dd2610509f4733707180378.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

好帮手慕酷酷 2019-11-16 19:16:10

同学你好,可以这样理解:

1、首先外部类对象调用内部类方法getHeart(),输出的内容是,新创建的内部类对象,调用的该对象的temp属性,而Heart类的temp属性没有为其赋值,所以第一个输出为0,如:

http://img1.sycdn.imooc.com//climg/5dcfd98e099515f405350163.jpg

2、调用的是内部类的对象的temp属性,而Heart类的temp属性没有为其赋值,所以输出也为0,如:

http://img1.sycdn.imooc.com//climg/5dcfda1609115b9704770207.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 慕后端4084011 #1
    1.可是老师在输出前那一句赋值不算吗?new Heart().temp=110; 2.那要怎么调用外部类新赋值给内部类变量的值呢? 3.还是说外部类调用内部类时变量值一般都是内部类直接赋值好的?
    2019-11-18 11:37:44
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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