黑马程序员技术交流社区

标题: 求大神解释???这代码哪里错了,没有语法错误,就是... [打印本页]

作者: shw16888    时间: 2015-4-5 11:02
标题: 求大神解释???这代码哪里错了,没有语法错误,就是...
本帖最后由 shw16888 于 2015-4-9 18:50 编辑
  1. class Person {
  2.     private int age;

  3. Person(int age) {
  4.             this.age = age;
  5.     }

  6.     // 给人定义一个用于比较年龄是否相同的功能,也就是是否是同龄人
  7.     public boolean compare(Person p) {
  8.             return this.age == p.age;

  9.     }

  10. }
  11. class personDemo{
  12.             public static void main(String[] args) {
  13.                     Person p1 = new Person(14);
  14.                     Person p2 = new Person(18);
  15.                     boolean b = p1.compare(p2);
  16.                     System.out.println(b);
  17.             }
  18.    
  19. }
复制代码


作者: long_yihuan    时间: 2015-4-5 11:26
public static class personDemo
作者: long_yihuan    时间: 2015-4-5 11:27
你得把static修饰符去掉,class类名不用静态修饰符

作者: 关山明月    时间: 2015-4-5 11:41
  1. class Person {
  2.         private int age;

  3.     Person(int age) {
  4.                 this.age = age;
  5.         }

  6.         // 给人定义一个用于比较年龄是否相同的功能,也就是是否是同龄人
  7.         public boolean compare(Person p) {
  8.                 return this.age == p.age;

  9.         }

  10.         public static class personDemo {
  11.                 public static void main(String[] args) {
  12.                         Person p1 = new Person(14);
  13.                         Person p2 = new Person(18);
  14.                         boolean b = p1.compare(p2);
  15.                         System.out.println(b);
  16.                 }
  17.         }
  18. }
复制代码


没有问题啊,我执行成功了。。。
作者: tubao1991    时间: 2015-4-5 12:18
敢问楼主 public static class personDemo 这个定义规则是什么意思?
作者: wkz_crystal    时间: 2015-4-5 12:22
这是内部类?
作者: 胡几手    时间: 2015-4-5 12:39
楼上的已经说清楚了。
作者: 天空的彩虹    时间: 2015-4-5 13:07
楼上的已经说清楚了。
作者: Nick_KJ    时间: 2015-4-5 13:58
首先,你这是内部类,明确一点,除了“局部内部类”不可以被static修饰,正常的内部类是可以被static修饰的,这样这个内部类就拥有了static的各项属性,可以访问外部类的static。public也可以修饰类,所以楼上的朋友不用疑惑这一点。
修饰类的修饰符:
public(一个java文件中不可以出现2个以上用public修饰的类或者接口,而且public公有类要和文件名同名)、default(默认,即什么也不写)、
abstract(抽象类)、
final(此类不可以被继承)
protected(修饰成员内部类、在包之间访问时,如果另外一个类继承了含有protected内部类的这个类,则可以使用这个内部类,否则不可以使用。同一个包中的protected修饰的类,子类的童明磊覆盖权限必须但与等于protected才可以。)
private(可以修饰内部类)、
static(可以修饰内部类)。
再看你的程序:如果你在dos下作的,首先可以运行,没有问题。
但是注意编译结束后生成的".class"文件名!!因为你是内部类!!!这个符号别忘了:$    如图:



作者: shw16888    时间: 2015-4-5 14:37
Nick_KJ 发表于 2015-4-5 13:58
首先,你这是内部类,明确一点,除了“局部内部类”不可以被static修饰,正常的内部类是可以被static修饰的 ...

:handshake太详细了,已明白,非常感谢。
作者: shw16888    时间: 2015-4-5 14:39
tubao1991 发表于 2015-4-5 12:18
敢问楼主 public static class personDemo 这个定义规则是什么意思?

内部类!!!
作者: Sylvanas    时间: 2015-4-5 17:09
应该是你一个文件里面两个类,然后有一个是public,所以文件名必须和public类名一样吧
作者: l540144279    时间: 2015-4-5 17:40
来看大神的解答~~。。。【数字君】
作者: Chenli    时间: 2015-4-5 18:46
看解释,,所获良多




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2