本文共 992 字,大约阅读时间需要 3 分钟。
Override覆盖方法规则: 1)子类方法的名称、参数签名和返回类型必须与父类方法的名称、参数签名和返回值一致 2)子类方法不能缩小父类方法的访问级别。 3)子类方法不能抛出比父类方法更多的异常,子类方法抛出的异常必须和父类方法抛出的异常相同,或者子类方法抛出的异常类是父类方法抛出的异常类的子类。 4)被覆盖的方法不能为private,否则在其子类只是定义一个新的方法,并不能对其进行覆盖。 方法覆盖和方法重载的相同之处:要求方法同名。不同: 1)方法覆盖要求参数签名必须一致,而方法重载要求参数签名必须不一致 2)方法覆盖要求返回类型必须一致,而方法重载对此不作限制 3)方法覆盖对方法的访问级别和抛出的异常有特殊的要求,而方法重载在这方面没有任何限制。 构造函数:不能被static、final和abstract修饰。构造方法不能被子类继承,所以用final和abstract修饰没有意义。构造方法用于初始化一个新建的对象,所以用static修饰没有意义。不过可以有和构造函数同名的方法(不推荐)。 内部类种类: 变量——[成员变量——[实例变量|静态变量]|局部变量] 内部类——[成员内部类——[实例内部类|静态内部类]|局部内部类|匿名类] 顶层类只能处于public和默认访问级别,而内部成员类可以处于public、protected、默认和private,局部内部类可见范围是当前方法,不能用访问控制修饰符及static修饰符来修饰。以上来自《java逍遥游》 所有的内部类都可以有static final变量。 [转]抽象方法是否可同时为static,是否同时为native,是否同时为synchronized? 1)static方法只能被子类里面static的方法所覆盖,不能表现出多态,因为多态性是通过引用来实现的,所以abstract和static不可以同时使用。 2)native的方法时通过引入C/C++或其他本地语言来实现的,而在static块或方法里,无法引入不同的实现,所以不能同时使用abstract和native。 3)synchronized和abstract也不能混合使用,因为synchronized同步的是同一对象,而不是不同实现的不同对象。 转载于:https://my.oschina.net/braveCS/blog/548785