package com.sunp.mye;
class FatherClass{
private void print()
{
System.out.println("in Fathter");
}
protected void f()
{
print();
}
}
class Sonclass extends FatherClass{
public void f(int i)//1.不是重载,是添加的新方法
{
System.out.println("son");
print();
}
// @Override 不可以重写私有成员
private void print() //不是重写,也不是重载,是添加的新方法
{
System.out.println("in son");
}
}
public class MyFinal{
public static void main(String[] args) {
// TODO Auto
Sonclass a = new Sonclass();
a.f();
a.f(2);
// a.print(); error,因为父类中的print为私有方法,所以子类没有访问权限。
}
}
输出结果:
in Fathter
son
in son
* 结论
* 1.重载是同类中;重写是父类与子类中。所以只可以重写,不可以重载
* 2.子类继承了父类的所有成员,但是子类没有访问父类私有成员的权限。
* 3.无法重写。因为父类的私有成员不能被子类访问,所以不能重写。
* 4.关于重写问题:
* (1.子类中不可以降低父类方法的访问权限,但可以上升访问权限。
* (2.返回类型必须与被重写方法的返回类型相同。方法名、参数列表也必须相同,只是方法体不同。
* (3.子类抛出的异常类型不能比父类抛出的异常类型更宽泛!
* (4.不能重写被标识为final的方法。
* (5.因为父类的私有成员不能被子类访问,所以不能重写。同时,private方法被自动认为是final方法,所以private方法不可以改变,而且private方法不能被重载。