JAVA 中的重写与重载

来源:互联网 发布:qq输入法linux 编辑:程序博客网 时间:2024/05/19 00:51
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 AutoSonclass 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方法不能被重载。


0 0
原创粉丝点击