如果方法未标记 public(所有 类 都在同一个文件中),程序将报错
Program will give an error if method not marked public ( all classes are in the same file)
我正在尝试创建一个匿名 class,在此期间我遇到了以下问题。在下面的代码中,当我将显示方法访问修饰符更改为默认值时,它会出错,但是当我将其更改为 public 时,它工作正常。你能向我解释一下为什么这个 happens.AFAIK public 和默认的工作方式相似,只要所有 class 都在同一个包中。如有不妥请指正
//来自文件:Skg.java
package sandeep2;
class Skg1
{
public void display()
{
System.out.println("sandeep here");
}
}
class Skg2 {
public void say()
{
System.out.println("Skg2");
}
Skg1 obj = new Skg1()
{
**public void display()** //wont work if this is not public ????????????
{
System.out.println("I am ANONymous");
}
};
}
public class Skg {
public static void main(String[] args)
{
Skg2 x = new Skg2();
x.obj.display();
}
}
Class Skg2
尝试创建匿名内部实例 class 作为 class Skg1
的子 class。匿名内部 class 覆盖 Skg1.display()
,即 public。您不能覆盖方法以降低其可见性。 Java不允许,能做就违反代入原则
我正在尝试创建一个匿名 class,在此期间我遇到了以下问题。在下面的代码中,当我将显示方法访问修饰符更改为默认值时,它会出错,但是当我将其更改为 public 时,它工作正常。你能向我解释一下为什么这个 happens.AFAIK public 和默认的工作方式相似,只要所有 class 都在同一个包中。如有不妥请指正
//来自文件:Skg.java
package sandeep2;
class Skg1
{
public void display()
{
System.out.println("sandeep here");
}
}
class Skg2 {
public void say()
{
System.out.println("Skg2");
}
Skg1 obj = new Skg1()
{
**public void display()** //wont work if this is not public ????????????
{
System.out.println("I am ANONymous");
}
};
}
public class Skg {
public static void main(String[] args)
{
Skg2 x = new Skg2();
x.obj.display();
}
}
Class Skg2
尝试创建匿名内部实例 class 作为 class Skg1
的子 class。匿名内部 class 覆盖 Skg1.display()
,即 public。您不能覆盖方法以降低其可见性。 Java不允许,能做就违反代入原则