1.老师,为什么我创建的这个老师出错,实在有点找不到原因?
package com.imooc.people; public class Heart { } package com.imooc.people; //外部类 public class Personal { public int age; // new Heart().temp=12; public Heart getHeart() { return new Heart(); } public void eat() { System.out.println("人会吃东西 "); } /* * 成员内部类 1.内部类在外部使用时,无法直接实例化,需要借助外部类实例化才能访问; 2.内部类的访问修饰符,可以任意,但访问权限会受到影响; * 3.内部类的可以直接访问外部类的成员,如果出项同名属性,优先访问内部类中定义的; 4.可以使用外部类中.this。成员的方式访问外部类当中同名的信息; * 5.外部类访问内部类不能直接访问,需要通过new 内部类()。对象名; 6.内部类编译后.class文件命名:外部类$内部类。class; */ /* * public class Heart { int age = 13; int temp = 223; * * public String beat() { return Personal.this.age + "岁的心脏在跳动"; // * 访问personal类中的成员; } } */ /* * 静态内部类 1.静态内部类中,只能直接访问外部类中的静态成员(方法和属性),如果需要调用非静态成员,可以通过对象实例; * 2.静态内部类对象实例时,可与不依赖于外部类对象; * 3.可以通过外部类.内部类。静态成员的方式,访问内部类中的成员; * 4.当内部类与外部类当中的的属性同名时,默认直接调用内部类中的成员;如果需要访问外部类中的静态属性,则可以通过外部类。属性的方式访问;;如果需要访问外部类中的非静态属性,则可以通过new 外部类()。属性的方式访问; */ public static class Heart { public static int age = 13;// 问题2:为何此处不注释会报错?有何解决办法? // int temp = 23; new Personal().eat(); public static void say() { System.out.println("你好"); } public String beat() { return new Personal().age + "岁的心脏在跳动"; // 访问personal类中的成员; } } } package com.imooc.test; import com.imooc.people.Personal; import com.imooc.people.Personal.Heart; public class PeopleTest { public static void main(String[] args) { /*Personal lili = new Personal(); lili.age = 12; // 获取内部类的实例对象,方案一:new 外部类()。new 内部类(); Personal.Heart myHeart = new Personal().new Heart(); System.out.println(myHeart.beat()); // 获取内部类的实例对象,方案二:外部类对象。new 内部类(); myHeart=lili.new Heart(); System.out.println(myHeart.beat()); // 获取内部类的实例对象,方案三:外部类对象。获取方法; myHeart=lili.getHeart(); System.out.println(myHeart.beat());*/ Personal.Heart muHeart= new Personal.Heart(); System.out.println(muHeart.beat());//问题4:报错 Personal.Heart.say(); } }
27
收起
正在回答
3回答
1、下图选中的代码,不能写到类的定义里面,要写到方法里面,你可以写到say()方法中,类的这个位置只能写变量和方法的定义。另外,注意Peraonal这个类名写错了,应该是Personal。再有,从你新粘贴的代码中看到,Heart()这个类中并没有temp属性,所以此处报错。
2、下面的代码中,return语句后面不能再有语句 ,编译器会认为这段代码执行不到,所以会报错。可以去掉,或者根据需求写到合适的位置。
祝学习愉快!
Ironxi_work
2018-01-31 18:49:36
代码如下: 请老师指点 package com.imooc.people; public class Heart { } package com.imooc.people; //外部类 public class Personal { public int age; int temp; public Heart getHeart() { return new Heart(); } public void eat() { System.out.println("人会吃东西 "); } public static class Heart { // 1.此处报错;错误信息Syntax error on token "{", { expected after this tokenSyntax error // on token "{", { expected after this token new Peraonal().age=13;new Heart().temp=12; public void say() { /* * 2.此处报错 * Multiple markers at this line - Syntax error on token "{", ; expected - Syntax error, insert "VariableDeclarators" to complete LocalVariableDeclaration */ System.out.println("你好"); } public String beat() { return new Personal().age + "岁的心脏在跳动"; // 访问personal类中的成员; new Personal().eat(); } } }
Java零基础入门18
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星