首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

这样构成覆盖吗?解决方法

2012-02-04 
这样构成覆盖吗?classt2{privatevoidtest(){System.out.println( t2test )}}classt3extendst2{publicvo

这样构成覆盖吗?
class   t2
{
  private   void   test()
  {
  System.out.println( "t2   test ");
  }
}
class   t3   extends   t2
{
public   void   test()
{
System.out.println( "t3   test ");
}

}


public   class   t1
{
public   static   void   main(String[]   args)
{
t3   t   =   new   t3();
t.test();

}

}
输出结果是 "t3   test "
这样也构成覆盖吗?不可能是重载

[解决办法]
you are so clever
[解决办法]
class t3 extends t2之后重写了test()方法。````
[解决办法]
不叫覆盖,他没从父类继承过来priate方法,而是写一个新的方法.
[解决办法]
1. 子类 继承 父类 的所有方法 除了构造方法
因此 t2中的 test()方法 虽然是 priate 但也被继承过来了
只不过 t3 中 不能用 这个方法而已
2. t3 test() 方法 是属于 t3 自己的 与 父类无关
所有 即不是覆盖 也不是重载
记住两个概念:
a 方法重载:在同一个类中有相同的 名称 但参数类表不同
b 方法重写:在两个类中要求 名字 类型 参数列表都相同 方法体不同
[解决办法]
将继承过来的东西从新定义才叫覆盖
现在t2中的方法是private,根本没有被t3继承
t3只是定义了一个和t2中名字相同的方法
其实和t2没有任何关系
[解决办法]
private的方法.对子类是不可见的.怎么去覆盖?

热点排行