这样构成覆盖吗?
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的方法.对子类是不可见的.怎么去覆盖?