黑马程序员技术交流社区
标题:
在匿名内部类中对接口的方法复写为何前面要加public???
[打印本页]
作者:
々白点潜心ザ
时间:
2014-4-22 10:17
标题:
在匿名内部类中对接口的方法复写为何前面要加public???
本帖最后由 々白点潜心ザ 于 2014-4-22 14:47 编辑
interface Inter
{
void method();
}
class Test
{
static Inter function()
{
return new Inter()
{
public void method()
{
System.out.println("method run!");
}
};
}
}
class InnerClassDemo
{
public static void main(String[] args)//前面为何一定要加public!!!
{
Test.function().method();
}
}
复制代码
小弟初学,求大神指点,谢了
作者:
Mr.飞碍特
时间:
2014-4-22 10:28
对于类接口方法复写,如果不加上关键字public的话,会导致无法实现,正在尝试指定更低的访
问权限,接口中的方法隐含都是public和abstract的。所以在实现接口的类中,实现方法时都要在方法前加上“public”修饰符。
不过你这个标注的是主函数main()啊,Java指定了一些可访问的修饰符如:private、protected、public,任何方法或变量都可以声明为public,Java可以从该类之外的地方访问。因为main方法是公共的,JVM就可以轻松的访问执行它。
作者:
曲佳奇
时间:
2014-4-22 10:30
本帖最后由 曲佳奇 于 2014-4-22 10:34 编辑
接口中默认方法都是public 实现接口 必须重写里面的所有方法 重写要求 子类方法的权限比父类大或者相等 所以必须为public
至于你加备注的那句 public static void main 主函数格式啊 这个不能改的 要不会找不到程序入口
作者:
⒈心只霸占沵
时间:
2014-4-22 10:35
因为接口方法是简写格式
void method();//是简写格式 其实是public abstract void method();
作者:
王峰峰
时间:
2014-4-22 10:38
学习一下Main方法:
-->public:表示此方法可以被内部调用
-->static:表示此方法可以由类名直接调用
-->void:主方法是程序的起点,所以不需要任何的返回值
-->main:系统规定好默认调用的方法名称,执行时默认找到main方法名称
-->String args[]:表示是运行时报参数
不用public 修饰的话,虚拟机就无法找到它。
作者:
坏米饭
时间:
2014-4-22 11:28
void method();就是public abstract void method();
默认的格式,你不写他也有。
作者:
idream
时间:
2014-4-22 11:36
这个问题涉及到两个知识点:
一:在interface中常见的成员,这些成员都有固定的修饰符
全局常量:public static final
抽象方法:public abstract
二:子类实现父类的接口时,覆盖其父类方法,子类的权限要打与父类的权限
作者:
tacyjay在路上
时间:
2014-4-22 12:04
你的public标错地方了吧?看代码
interface Inter
{
void method();//其实这儿应该是:public abstract void method() 不写的话,会默认加上。
}
class Test
{
static Inter function()
{
return new Inter()
{
public void method()//前面为何一定要加public!!! [color=Red]是这儿吧[/color]
{
System.out.println("method run!");
}
};
}
}
class InnerClassDemo
{
public static void main(String[] args)
{
Test.function().method();
}
}
复制代码
这个知识点,毕老师(见视频day0712)在讲接口的时候强调过。下面写出来:
接口定义时,格式特点:
<1>接口中常见定义:常量,抽象方法。
<2>接口中的成员
都有固定修饰符(没有的话,系统会自动加上)
。
常量:public static final
方法:public abstract
作者:
々白点潜心ザ
时间:
2014-4-22 12:37
tacyjay在路上 发表于 2014-4-22 12:04
你的public标错地方了吧?看代码
额,,是的,,想起来了,谢谢咯
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2