A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 々白点潜心ザ 于 2014-4-22 14:47 编辑
  1. interface Inter
  2. {
  3.         void method();
  4. }

  5. class Test
  6. {
  7.         static Inter function()
  8.         {
  9.                 return new Inter()
  10.                 {
  11.                         public void method()
  12.                         {
  13.                                 System.out.println("method run!");
  14.                         }
  15.                 };
  16.         }
  17. }

  18. class InnerClassDemo
  19. {
  20.         public static void main(String[] args)//前面为何一定要加public!!!
  21.         {
  22.                 Test.function().method();
  23.         }
  24. }
复制代码
小弟初学,求大神指点,谢了

点评

认真去看视频吧  发表于 2014-4-22 13:19

9 个回复

倒序浏览
对于类接口方法复写,如果不加上关键字public的话,会导致无法实现,正在尝试指定更低的访
问权限,接口中的方法隐含都是public和abstract的。所以在实现接口的类中,实现方法时都要在方法前加上“public”修饰符。
不过你这个标注的是主函数main()啊,Java指定了一些可访问的修饰符如:private、protected、public,任何方法或变量都可以声明为public,Java可以从该类之外的地方访问。因为main方法是公共的,JVM就可以轻松的访问执行它。
回复 使用道具 举报
本帖最后由 曲佳奇 于 2014-4-22 10:34 编辑

接口中默认方法都是public 实现接口 必须重写里面的所有方法  重写要求 子类方法的权限比父类大或者相等 所以必须为public
至于你加备注的那句 public static void main 主函数格式啊 这个不能改的 要不会找不到程序入口
回复 使用道具 举报
因为接口方法是简写格式
void method();//是简写格式  其实是public abstract void method();
回复 使用道具 举报 1 0
学习一下Main方法:
-->public:表示此方法可以被内部调用
-->static:表示此方法可以由类名直接调用
-->void:主方法是程序的起点,所以不需要任何的返回值
-->main:系统规定好默认调用的方法名称,执行时默认找到main方法名称
-->String args[]:表示是运行时报参数
不用public 修饰的话,虚拟机就无法找到它。
回复 使用道具 举报
void method();就是public abstract void method();
默认的格式,你不写他也有。
回复 使用道具 举报
idream 中级黑马 2014-4-22 11:36:30
7#
这个问题涉及到两个知识点:
一:在interface中常见的成员,这些成员都有固定的修饰符
全局常量:public static final
抽象方法:public abstract
二:子类实现父类的接口时,覆盖其父类方法,子类的权限要打与父类的权限

回复 使用道具 举报
你的public标错地方了吧?看代码

  1. interface Inter
  2. {
  3.         void method();//其实这儿应该是:public abstract void method() 不写的话,会默认加上。
  4. }

  5. class Test
  6. {
  7.         static Inter function()
  8.         {
  9.                 return new Inter()
  10.                 {
  11.                         public void method()//前面为何一定要加public!!!  [color=Red]是这儿吧[/color]
  12.                         {
  13.                                 System.out.println("method run!");
  14.                         }
  15.                 };
  16.         }
  17. }

  18. class InnerClassDemo
  19. {
  20.         public static void main(String[] args)
  21.         {
  22.                 Test.function().method();
  23.         }
  24. }
复制代码


这个知识点,毕老师(见视频day0712)在讲接口的时候强调过。下面写出来:

接口定义时,格式特点:
  <1>接口中常见定义:常量,抽象方法。
  <2>接口中的成员都有固定修饰符(没有的话,系统会自动加上)
  常量:public static final
  方法:public abstract

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报
tacyjay在路上 发表于 2014-4-22 12:04
你的public标错地方了吧?看代码

额,,是的,,想起来了,谢谢咯
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马